-
Notifications
You must be signed in to change notification settings - Fork 300
mark riscv intrinsics as safe #1717
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Amanieu
merged 1 commit into
rust-lang:master
from
usamoi:target_feature_11_updates_riscv
Feb 23, 2025
Merged
mark riscv intrinsics as safe #1717
Amanieu
merged 1 commit into
rust-lang:master
from
usamoi:target_feature_11_updates_riscv
Feb 23, 2025
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
bors
added a commit
to rust-lang-ci/rust
that referenced
this pull request
Feb 27, 2025
Update stdarch Updates stdarch - s390x_is_feature_detected!: detect more features: rust-lang/stdarch#1720 - fix - neon type signed unsigned conversions: rust-lang/stdarch#1729 - Remove some allow(unsafe_op_in_unsafe_fn)s and use target_feature 1.1 in examples: rust-lang/stdarch#1727 - Changed altivec.rs to new intrinsic declaration: rust-lang/stdarch#1722 - powerpc: use simd_ceil and simd_floor: rust-lang/stdarch#1723 - nvptx: use simd_fmin and simd_fmax for minnum and maxnum: rust-lang/stdarch#1725 - wasm: use simd_as for float to integer conversions: rust-lang/stdarch#1724 - AArch64: Add NEON fp16 intrinsics: rust-lang/stdarch#1726 - mark x86 intrinsics as safe: rust-lang/stdarch#1714 - Fix - AArch64 Big Endian Intrinsics: rust-lang/stdarch#1708 - change redundant transmutations of sign to cast_unsigned: rust-lang/stdarch#1711 - mark riscv intrinsics as safe: rust-lang/stdarch#1717 - S390x float rounding: rust-lang/stdarch#1712 - powerpc: use more target-independent llvm intrinsics (min, max, round, countlz): rust-lang/stdarch#1713 - Update wasm sub sat intrinsics for LLVM 20: rust-lang/stdarch#1719 - Update CI to FreeBSD 13.4: rust-lang/stdarch#1715 - S390x vector bitwise operations: rust-lang/stdarch#1709 - Add keylocker (kl and widekl) intrinsics and runtime feature detection: rust-lang/stdarch#1706 - Update all stdarch crates to Rust 2024: rust-lang/stdarch#1710 - Fix some test naming, and refactor stdarch-verify in general: rust-lang/stdarch#1707 - Fix build and CLI behaviour for stdarch-gen-arm. rust-lang/stdarch#1705 - s390x: add vec_sub, vec_mul, vec_min, vec_max, vec_abs and vec_splats: rust-lang/stdarch#1704 - add vec_add for s390x: rust-lang/stdarch#1703 - add is_s390x_feature_detected: rust-lang/stdarch#1699 - Fix typo and prettify comment: rust-lang/stdarch#1697 - Tidying x86 `as_*` functions: rust-lang/stdarch#1696 - Expand feature detection on AArch64 Darwin: rust-lang/stdarch#1695 - Fix the bug in CMPINT intrinsics with IMM3=7: rust-lang/stdarch#1694 - New ARM intrinsic generator: rust-lang/stdarch#1693 - core_arch: Add LoongArch basic intrinsics: rust-lang/stdarch#1688 try-job: aarch64-apple try-job: aarch64-gnu try-job: aarch64-gnu-debug try-job: dist-powerpc-linux try-job: i686-gnu-1 try-job: i686-gnu-2
bors
added a commit
to rust-lang-ci/rust
that referenced
this pull request
Feb 28, 2025
Update stdarch Updates stdarch - Fix doctests failing due to unused_unsafe: rust-lang/stdarch#1731 - s390x_is_feature_detected!: detect more features: rust-lang/stdarch#1720 - fix - neon type signed unsigned conversions: rust-lang/stdarch#1729 - Remove some allow(unsafe_op_in_unsafe_fn)s and use target_feature 1.1 in examples: rust-lang/stdarch#1727 - Changed altivec.rs to new intrinsic declaration: rust-lang/stdarch#1722 - powerpc: use simd_ceil and simd_floor: rust-lang/stdarch#1723 - nvptx: use simd_fmin and simd_fmax for minnum and maxnum: rust-lang/stdarch#1725 - wasm: use simd_as for float to integer conversions: rust-lang/stdarch#1724 - AArch64: Add NEON fp16 intrinsics: rust-lang/stdarch#1726 - mark x86 intrinsics as safe: rust-lang/stdarch#1714 - Fix - AArch64 Big Endian Intrinsics: rust-lang/stdarch#1708 - change redundant transmutations of sign to cast_unsigned: rust-lang/stdarch#1711 - mark riscv intrinsics as safe: rust-lang/stdarch#1717 - S390x float rounding: rust-lang/stdarch#1712 - powerpc: use more target-independent llvm intrinsics (min, max, round, countlz): rust-lang/stdarch#1713 - Update wasm sub sat intrinsics for LLVM 20: rust-lang/stdarch#1719 - Update CI to FreeBSD 13.4: rust-lang/stdarch#1715 - S390x vector bitwise operations: rust-lang/stdarch#1709 - Add keylocker (kl and widekl) intrinsics and runtime feature detection: rust-lang/stdarch#1706 - Update all stdarch crates to Rust 2024: rust-lang/stdarch#1710 - Fix some test naming, and refactor stdarch-verify in general: rust-lang/stdarch#1707 - Fix build and CLI behaviour for stdarch-gen-arm. rust-lang/stdarch#1705 - s390x: add vec_sub, vec_mul, vec_min, vec_max, vec_abs and vec_splats: rust-lang/stdarch#1704 - add vec_add for s390x: rust-lang/stdarch#1703 - add is_s390x_feature_detected: rust-lang/stdarch#1699 - Fix typo and prettify comment: rust-lang/stdarch#1697 - Tidying x86 `as_*` functions: rust-lang/stdarch#1696 - Expand feature detection on AArch64 Darwin: rust-lang/stdarch#1695 - Fix the bug in CMPINT intrinsics with IMM3=7: rust-lang/stdarch#1694 - New ARM intrinsic generator: rust-lang/stdarch#1693 - core_arch: Add LoongArch basic intrinsics: rust-lang/stdarch#1688 try-job: aarch64-apple try-job: aarch64-gnu try-job: aarch64-gnu-debug try-job: dist-powerpc-linux try-job: i686-gnu-1 try-job: i686-gnu-2
bors
added a commit
to rust-lang-ci/rust
that referenced
this pull request
Feb 28, 2025
Update stdarch Updates stdarch - Fix doctests failing due to unused_unsafe: rust-lang/stdarch#1731 - s390x_is_feature_detected!: detect more features: rust-lang/stdarch#1720 - fix - neon type signed unsigned conversions: rust-lang/stdarch#1729 - Remove some allow(unsafe_op_in_unsafe_fn)s and use target_feature 1.1 in examples: rust-lang/stdarch#1727 - Changed altivec.rs to new intrinsic declaration: rust-lang/stdarch#1722 - powerpc: use simd_ceil and simd_floor: rust-lang/stdarch#1723 - nvptx: use simd_fmin and simd_fmax for minnum and maxnum: rust-lang/stdarch#1725 - wasm: use simd_as for float to integer conversions: rust-lang/stdarch#1724 - AArch64: Add NEON fp16 intrinsics: rust-lang/stdarch#1726 - mark x86 intrinsics as safe: rust-lang/stdarch#1714 - Fix - AArch64 Big Endian Intrinsics: rust-lang/stdarch#1708 - change redundant transmutations of sign to cast_unsigned: rust-lang/stdarch#1711 - mark riscv intrinsics as safe: rust-lang/stdarch#1717 - S390x float rounding: rust-lang/stdarch#1712 - powerpc: use more target-independent llvm intrinsics (min, max, round, countlz): rust-lang/stdarch#1713 - Update wasm sub sat intrinsics for LLVM 20: rust-lang/stdarch#1719 - Update CI to FreeBSD 13.4: rust-lang/stdarch#1715 - S390x vector bitwise operations: rust-lang/stdarch#1709 - Add keylocker (kl and widekl) intrinsics and runtime feature detection: rust-lang/stdarch#1706 - Update all stdarch crates to Rust 2024: rust-lang/stdarch#1710 - Fix some test naming, and refactor stdarch-verify in general: rust-lang/stdarch#1707 - Fix build and CLI behaviour for stdarch-gen-arm. rust-lang/stdarch#1705 - s390x: add vec_sub, vec_mul, vec_min, vec_max, vec_abs and vec_splats: rust-lang/stdarch#1704 - add vec_add for s390x: rust-lang/stdarch#1703 - add is_s390x_feature_detected: rust-lang/stdarch#1699 - Fix typo and prettify comment: rust-lang/stdarch#1697 - Tidying x86 `as_*` functions: rust-lang/stdarch#1696 - Expand feature detection on AArch64 Darwin: rust-lang/stdarch#1695 - Fix the bug in CMPINT intrinsics with IMM3=7: rust-lang/stdarch#1694 - New ARM intrinsic generator: rust-lang/stdarch#1693 - core_arch: Add LoongArch basic intrinsics: rust-lang/stdarch#1688 try-job: aarch64-apple try-job: aarch64-gnu try-job: aarch64-gnu-debug try-job: dist-powerpc-linux try-job: i686-gnu-1 try-job: i686-gnu-2
bors
added a commit
to rust-lang-ci/rust
that referenced
this pull request
Mar 1, 2025
Update stdarch Updates stdarch - Fix doctests failing due to unused_unsafe: rust-lang/stdarch#1731 - s390x_is_feature_detected!: detect more features: rust-lang/stdarch#1720 - fix - neon type signed unsigned conversions: rust-lang/stdarch#1729 - Remove some allow(unsafe_op_in_unsafe_fn)s and use target_feature 1.1 in examples: rust-lang/stdarch#1727 - Changed altivec.rs to new intrinsic declaration: rust-lang/stdarch#1722 - powerpc: use simd_ceil and simd_floor: rust-lang/stdarch#1723 - nvptx: use simd_fmin and simd_fmax for minnum and maxnum: rust-lang/stdarch#1725 - wasm: use simd_as for float to integer conversions: rust-lang/stdarch#1724 - AArch64: Add NEON fp16 intrinsics: rust-lang/stdarch#1726 - mark x86 intrinsics as safe: rust-lang/stdarch#1714 - Fix - AArch64 Big Endian Intrinsics: rust-lang/stdarch#1708 - change redundant transmutations of sign to cast_unsigned: rust-lang/stdarch#1711 - mark riscv intrinsics as safe: rust-lang/stdarch#1717 - S390x float rounding: rust-lang/stdarch#1712 - powerpc: use more target-independent llvm intrinsics (min, max, round, countlz): rust-lang/stdarch#1713 - Update wasm sub sat intrinsics for LLVM 20: rust-lang/stdarch#1719 - Update CI to FreeBSD 13.4: rust-lang/stdarch#1715 - S390x vector bitwise operations: rust-lang/stdarch#1709 - Add keylocker (kl and widekl) intrinsics and runtime feature detection: rust-lang/stdarch#1706 - Update all stdarch crates to Rust 2024: rust-lang/stdarch#1710 - Fix some test naming, and refactor stdarch-verify in general: rust-lang/stdarch#1707 - Fix build and CLI behaviour for stdarch-gen-arm. rust-lang/stdarch#1705 - s390x: add vec_sub, vec_mul, vec_min, vec_max, vec_abs and vec_splats: rust-lang/stdarch#1704 - add vec_add for s390x: rust-lang/stdarch#1703 - add is_s390x_feature_detected: rust-lang/stdarch#1699 - Fix typo and prettify comment: rust-lang/stdarch#1697 - Tidying x86 `as_*` functions: rust-lang/stdarch#1696 - Expand feature detection on AArch64 Darwin: rust-lang/stdarch#1695 - Fix the bug in CMPINT intrinsics with IMM3=7: rust-lang/stdarch#1694 - New ARM intrinsic generator: rust-lang/stdarch#1693 - core_arch: Add LoongArch basic intrinsics: rust-lang/stdarch#1688
bors
added a commit
to rust-lang-ci/rust
that referenced
this pull request
Mar 3, 2025
Update stdarch Updates stdarch - core_arch: Add LoongArch basic intrinsics: rust-lang/stdarch#1688 - New ARM intrinsic generator: rust-lang/stdarch#1693 - Fix the bug in CMPINT intrinsics with IMM3=7: rust-lang/stdarch#1694 - Expand feature detection on AArch64 Darwin: rust-lang/stdarch#1695 - Tidying x86 `as_*` functions: rust-lang/stdarch#1696 - Fix typo and prettify comment: rust-lang/stdarch#1697 - add is_s390x_feature_detected: rust-lang/stdarch#1699 - add vec_add for s390x: rust-lang/stdarch#1703 - s390x: add vec_sub, vec_mul, vec_min, vec_max, vec_abs and vec_splats: rust-lang/stdarch#1704 - Fix build and CLI behaviour for stdarch-gen-arm. rust-lang/stdarch#1705 - Fix some test naming, and refactor stdarch-verify in general: rust-lang/stdarch#1707 - Update all stdarch crates to Rust 2024: rust-lang/stdarch#1710 - Add keylocker (kl and widekl) intrinsics and runtime feature detection: rust-lang/stdarch#1706 - S390x vector bitwise operations: rust-lang/stdarch#1709 - Update CI to FreeBSD 13.4: rust-lang/stdarch#1715 - Update wasm sub sat intrinsics for LLVM 20: rust-lang/stdarch#1719 - powerpc: use more target-independent llvm intrinsics (min, max, round, countlz): rust-lang/stdarch#1713 - S390x float rounding: rust-lang/stdarch#1712 - mark riscv intrinsics as safe: rust-lang/stdarch#1717 - change redundant transmutations of sign to cast_unsigned: rust-lang/stdarch#1711 - Fix - AArch64 Big Endian Intrinsics: rust-lang/stdarch#1708 - mark x86 intrinsics as safe: rust-lang/stdarch#1714 - AArch64: Add NEON fp16 intrinsics: rust-lang/stdarch#1726 - wasm: use simd_as for float to integer conversions: rust-lang/stdarch#1724 - nvptx: use simd_fmin and simd_fmax for minnum and maxnum: rust-lang/stdarch#1725 - powerpc: use simd_ceil and simd_floor: rust-lang/stdarch#1723 - Changed altivec.rs to new intrinsic declaration: rust-lang/stdarch#1722 - Remove some allow(unsafe_op_in_unsafe_fn)s and use target_feature 1.1 in examples: rust-lang/stdarch#1727 - fix - neon type signed unsigned conversions: rust-lang/stdarch#1729 - s390x_is_feature_detected!: detect more features: rust-lang/stdarch#1720 - Fix doctests failing due to unused_unsafe: rust-lang/stdarch#1731 - fix compilation on armebv7r-none-eabi: rust-lang/stdarch#1733 - wasm: update for rintf intrinsic rename: rust-lang/stdarch#1721 - powerpc: use the simd_fma intrinsic for vec_madd: rust-lang/stdarch#1734 - powerpc: use llvm.fshl for vec_rl: rust-lang/stdarch#1735 - s390x: add more intrinsics: rust-lang/stdarch#1728 try: dist-s390x-linux try: dist-aarch64-msvc try: dist-powerpc-linux try: dist-powerpc64-linux try: dist-powerpc64le-linux try: x86_64-msvc-ext3 try: x86_64-msvc-ext2 try: x86_64-msvc-1 try: x86_64-msvc-2 try: i686-msvc-1
bors
added a commit
to rust-lang-ci/rust
that referenced
this pull request
Mar 3, 2025
Update stdarch Updates stdarch - core_arch: Add LoongArch basic intrinsics: rust-lang/stdarch#1688 - New ARM intrinsic generator: rust-lang/stdarch#1693 - Fix the bug in CMPINT intrinsics with IMM3=7: rust-lang/stdarch#1694 - Expand feature detection on AArch64 Darwin: rust-lang/stdarch#1695 - Tidying x86 `as_*` functions: rust-lang/stdarch#1696 - Fix typo and prettify comment: rust-lang/stdarch#1697 - add is_s390x_feature_detected: rust-lang/stdarch#1699 - add vec_add for s390x: rust-lang/stdarch#1703 - s390x: add vec_sub, vec_mul, vec_min, vec_max, vec_abs and vec_splats: rust-lang/stdarch#1704 - Fix build and CLI behaviour for stdarch-gen-arm. rust-lang/stdarch#1705 - Fix some test naming, and refactor stdarch-verify in general: rust-lang/stdarch#1707 - Update all stdarch crates to Rust 2024: rust-lang/stdarch#1710 - Add keylocker (kl and widekl) intrinsics and runtime feature detection: rust-lang/stdarch#1706 - S390x vector bitwise operations: rust-lang/stdarch#1709 - Update CI to FreeBSD 13.4: rust-lang/stdarch#1715 - Update wasm sub sat intrinsics for LLVM 20: rust-lang/stdarch#1719 - powerpc: use more target-independent llvm intrinsics (min, max, round, countlz): rust-lang/stdarch#1713 - S390x float rounding: rust-lang/stdarch#1712 - mark riscv intrinsics as safe: rust-lang/stdarch#1717 - change redundant transmutations of sign to cast_unsigned: rust-lang/stdarch#1711 - Fix - AArch64 Big Endian Intrinsics: rust-lang/stdarch#1708 - mark x86 intrinsics as safe: rust-lang/stdarch#1714 - AArch64: Add NEON fp16 intrinsics: rust-lang/stdarch#1726 - wasm: use simd_as for float to integer conversions: rust-lang/stdarch#1724 - nvptx: use simd_fmin and simd_fmax for minnum and maxnum: rust-lang/stdarch#1725 - powerpc: use simd_ceil and simd_floor: rust-lang/stdarch#1723 - Changed altivec.rs to new intrinsic declaration: rust-lang/stdarch#1722 - Remove some allow(unsafe_op_in_unsafe_fn)s and use target_feature 1.1 in examples: rust-lang/stdarch#1727 - fix - neon type signed unsigned conversions: rust-lang/stdarch#1729 - s390x_is_feature_detected!: detect more features: rust-lang/stdarch#1720 - Fix doctests failing due to unused_unsafe: rust-lang/stdarch#1731 - fix compilation on armebv7r-none-eabi: rust-lang/stdarch#1733 - wasm: update for rintf intrinsic rename: rust-lang/stdarch#1721 - powerpc: use the simd_fma intrinsic for vec_madd: rust-lang/stdarch#1734 - powerpc: use llvm.fshl for vec_rl: rust-lang/stdarch#1735 - s390x: add more intrinsics: rust-lang/stdarch#1728 try-job: dist-s390x-linux try-job: dist-aarch64-msvc try-job: dist-powerpc-linux try-job: dist-powerpc64-linux try-job: dist-powerpc64le-linux try-job: x86_64-msvc-ext3 try-job: x86_64-msvc-ext2 try-job: x86_64-msvc-1 try-job: x86_64-msvc-2 try-job: i686-msvc-1
bors
added a commit
to rust-lang-ci/rust
that referenced
this pull request
Mar 4, 2025
Update stdarch Updates stdarch - core_arch: Add LoongArch basic intrinsics: rust-lang/stdarch#1688 - New ARM intrinsic generator: rust-lang/stdarch#1693 - Fix the bug in CMPINT intrinsics with IMM3=7: rust-lang/stdarch#1694 - Expand feature detection on AArch64 Darwin: rust-lang/stdarch#1695 - Tidying x86 `as_*` functions: rust-lang/stdarch#1696 - Fix typo and prettify comment: rust-lang/stdarch#1697 - add is_s390x_feature_detected: rust-lang/stdarch#1699 - add vec_add for s390x: rust-lang/stdarch#1703 - s390x: add vec_sub, vec_mul, vec_min, vec_max, vec_abs and vec_splats: rust-lang/stdarch#1704 - Fix build and CLI behaviour for stdarch-gen-arm. rust-lang/stdarch#1705 - Fix some test naming, and refactor stdarch-verify in general: rust-lang/stdarch#1707 - Update all stdarch crates to Rust 2024: rust-lang/stdarch#1710 - Add keylocker (kl and widekl) intrinsics and runtime feature detection: rust-lang/stdarch#1706 - S390x vector bitwise operations: rust-lang/stdarch#1709 - Update CI to FreeBSD 13.4: rust-lang/stdarch#1715 - Update wasm sub sat intrinsics for LLVM 20: rust-lang/stdarch#1719 - powerpc: use more target-independent llvm intrinsics (min, max, round, countlz): rust-lang/stdarch#1713 - S390x float rounding: rust-lang/stdarch#1712 - mark riscv intrinsics as safe: rust-lang/stdarch#1717 - change redundant transmutations of sign to cast_unsigned: rust-lang/stdarch#1711 - Fix - AArch64 Big Endian Intrinsics: rust-lang/stdarch#1708 - mark x86 intrinsics as safe: rust-lang/stdarch#1714 - AArch64: Add NEON fp16 intrinsics: rust-lang/stdarch#1726 - wasm: use simd_as for float to integer conversions: rust-lang/stdarch#1724 - nvptx: use simd_fmin and simd_fmax for minnum and maxnum: rust-lang/stdarch#1725 - powerpc: use simd_ceil and simd_floor: rust-lang/stdarch#1723 - Changed altivec.rs to new intrinsic declaration: rust-lang/stdarch#1722 - Remove some allow(unsafe_op_in_unsafe_fn)s and use target_feature 1.1 in examples: rust-lang/stdarch#1727 - fix - neon type signed unsigned conversions: rust-lang/stdarch#1729 - s390x_is_feature_detected!: detect more features: rust-lang/stdarch#1720 - Fix doctests failing due to unused_unsafe: rust-lang/stdarch#1731 - fix compilation on armebv7r-none-eabi: rust-lang/stdarch#1733 - wasm: update for rintf intrinsic rename: rust-lang/stdarch#1721 - powerpc: use the simd_fma intrinsic for vec_madd: rust-lang/stdarch#1734 - powerpc: use llvm.fshl for vec_rl: rust-lang/stdarch#1735 - s390x: add more intrinsics: rust-lang/stdarch#1728
bors
added a commit
to rust-lang-ci/rust
that referenced
this pull request
Mar 6, 2025
Update stdarch Updates stdarch - core_arch: Add LoongArch basic intrinsics: rust-lang/stdarch#1688 - New ARM intrinsic generator: rust-lang/stdarch#1693 - Fix the bug in CMPINT intrinsics with IMM3=7: rust-lang/stdarch#1694 - Expand feature detection on AArch64 Darwin: rust-lang/stdarch#1695 - Tidying x86 `as_*` functions: rust-lang/stdarch#1696 - Fix typo and prettify comment: rust-lang/stdarch#1697 - add is_s390x_feature_detected: rust-lang/stdarch#1699 - add vec_add for s390x: rust-lang/stdarch#1703 - s390x: add vec_sub, vec_mul, vec_min, vec_max, vec_abs and vec_splats: rust-lang/stdarch#1704 - Fix build and CLI behaviour for stdarch-gen-arm. rust-lang/stdarch#1705 - Fix some test naming, and refactor stdarch-verify in general: rust-lang/stdarch#1707 - Update all stdarch crates to Rust 2024: rust-lang/stdarch#1710 - Add keylocker (kl and widekl) intrinsics and runtime feature detection: rust-lang/stdarch#1706 - S390x vector bitwise operations: rust-lang/stdarch#1709 - Update CI to FreeBSD 13.4: rust-lang/stdarch#1715 - Update wasm sub sat intrinsics for LLVM 20: rust-lang/stdarch#1719 - powerpc: use more target-independent llvm intrinsics (min, max, round, countlz): rust-lang/stdarch#1713 - S390x float rounding: rust-lang/stdarch#1712 - mark riscv intrinsics as safe: rust-lang/stdarch#1717 - change redundant transmutations of sign to cast_unsigned: rust-lang/stdarch#1711 - Fix - AArch64 Big Endian Intrinsics: rust-lang/stdarch#1708 - mark x86 intrinsics as safe: rust-lang/stdarch#1714 - AArch64: Add NEON fp16 intrinsics: rust-lang/stdarch#1726 - wasm: use simd_as for float to integer conversions: rust-lang/stdarch#1724 - nvptx: use simd_fmin and simd_fmax for minnum and maxnum: rust-lang/stdarch#1725 - powerpc: use simd_ceil and simd_floor: rust-lang/stdarch#1723 - Changed altivec.rs to new intrinsic declaration: rust-lang/stdarch#1722 - Remove some allow(unsafe_op_in_unsafe_fn)s and use target_feature 1.1 in examples: rust-lang/stdarch#1727 - fix - neon type signed unsigned conversions: rust-lang/stdarch#1729 - s390x_is_feature_detected!: detect more features: rust-lang/stdarch#1720 - Fix doctests failing due to unused_unsafe: rust-lang/stdarch#1731 - fix compilation on armebv7r-none-eabi: rust-lang/stdarch#1733 - wasm: update for rintf intrinsic rename: rust-lang/stdarch#1721 - powerpc: use the simd_fma intrinsic for vec_madd: rust-lang/stdarch#1734 - powerpc: use llvm.fshl for vec_rl: rust-lang/stdarch#1735 - s390x: add more intrinsics: rust-lang/stdarch#1728 - make _mm256_zero{upper,all} safe: rust-lang/stdarch#1736 - fix unnecessary unsafe error in doctest: rust-lang/stdarch#1739 - Feat - Aarch64 FEAT_FAMINMAX: rust-lang/stdarch#1732 - feat - FEAT_LUT neon instrinsics: rust-lang/stdarch#1741 try-job: x86_64-gnu-tools try-job: x86_64-msvc-1 try-job: x86_64-msvc-2 try-job: i686-msvc-1 try-job: i686-msvc-2 try-job: x86_64-msvc-ext1 try-job: x86_64-msvc-ext2 try-job: x86_64-msvc-ext3 try-job: i686-mingw-1 try-job: i686-mingw-2 try-job: i686-mingw-3 try-job: x86_64-mingw-1 try-job: x86_64-mingw-2 try-job: dist-i686-msvc try-job: dist-aarch64-msvc try-job: dist-i686-mingw try-job: dist-x86_64-mingw try-job: dist-x86_64-msvc-alt try-job: dist-x86_64-apple try-job: dist-apple-various try-job: x86_64-apple-1 try-job: x86_64-apple-2 try-job: dist-aarch64-apple try-job: aarch64-apple try-job: dist-android try-job: dist-ohos try-job: dist-various-1 try-job: dist-various-2 try-job: test-various try-job: armhf-gnu
bors
added a commit
to rust-lang-ci/rust
that referenced
this pull request
Mar 6, 2025
Update stdarch Updates stdarch - core_arch: Add LoongArch basic intrinsics: rust-lang/stdarch#1688 - New ARM intrinsic generator: rust-lang/stdarch#1693 - Fix the bug in CMPINT intrinsics with IMM3=7: rust-lang/stdarch#1694 - Expand feature detection on AArch64 Darwin: rust-lang/stdarch#1695 - Tidying x86 `as_*` functions: rust-lang/stdarch#1696 - Fix typo and prettify comment: rust-lang/stdarch#1697 - add is_s390x_feature_detected: rust-lang/stdarch#1699 - add vec_add for s390x: rust-lang/stdarch#1703 - s390x: add vec_sub, vec_mul, vec_min, vec_max, vec_abs and vec_splats: rust-lang/stdarch#1704 - Fix build and CLI behaviour for stdarch-gen-arm. rust-lang/stdarch#1705 - Fix some test naming, and refactor stdarch-verify in general: rust-lang/stdarch#1707 - Update all stdarch crates to Rust 2024: rust-lang/stdarch#1710 - Add keylocker (kl and widekl) intrinsics and runtime feature detection: rust-lang/stdarch#1706 - S390x vector bitwise operations: rust-lang/stdarch#1709 - Update CI to FreeBSD 13.4: rust-lang/stdarch#1715 - Update wasm sub sat intrinsics for LLVM 20: rust-lang/stdarch#1719 - powerpc: use more target-independent llvm intrinsics (min, max, round, countlz): rust-lang/stdarch#1713 - S390x float rounding: rust-lang/stdarch#1712 - mark riscv intrinsics as safe: rust-lang/stdarch#1717 - change redundant transmutations of sign to cast_unsigned: rust-lang/stdarch#1711 - Fix - AArch64 Big Endian Intrinsics: rust-lang/stdarch#1708 - mark x86 intrinsics as safe: rust-lang/stdarch#1714 - AArch64: Add NEON fp16 intrinsics: rust-lang/stdarch#1726 - wasm: use simd_as for float to integer conversions: rust-lang/stdarch#1724 - nvptx: use simd_fmin and simd_fmax for minnum and maxnum: rust-lang/stdarch#1725 - powerpc: use simd_ceil and simd_floor: rust-lang/stdarch#1723 - Changed altivec.rs to new intrinsic declaration: rust-lang/stdarch#1722 - Remove some allow(unsafe_op_in_unsafe_fn)s and use target_feature 1.1 in examples: rust-lang/stdarch#1727 - fix - neon type signed unsigned conversions: rust-lang/stdarch#1729 - s390x_is_feature_detected!: detect more features: rust-lang/stdarch#1720 - Fix doctests failing due to unused_unsafe: rust-lang/stdarch#1731 - fix compilation on armebv7r-none-eabi: rust-lang/stdarch#1733 - wasm: update for rintf intrinsic rename: rust-lang/stdarch#1721 - powerpc: use the simd_fma intrinsic for vec_madd: rust-lang/stdarch#1734 - powerpc: use llvm.fshl for vec_rl: rust-lang/stdarch#1735 - s390x: add more intrinsics: rust-lang/stdarch#1728 - make _mm256_zero{upper,all} safe: rust-lang/stdarch#1736 - fix unnecessary unsafe error in doctest: rust-lang/stdarch#1739 - Feat - Aarch64 FEAT_FAMINMAX: rust-lang/stdarch#1732 - feat - FEAT_LUT neon instrinsics: rust-lang/stdarch#1741 try-job: dist-x86_64-msvc try-job: aarch64-gnu try-job: aarch64-gnu-debug try-job: dist-aarch64-linux try-job: dist-arm-linux
bors
added a commit
to rust-lang-ci/rust
that referenced
this pull request
Mar 6, 2025
Update stdarch Updates stdarch - core_arch: Add LoongArch basic intrinsics: rust-lang/stdarch#1688 - New ARM intrinsic generator: rust-lang/stdarch#1693 - Fix the bug in CMPINT intrinsics with IMM3=7: rust-lang/stdarch#1694 - Expand feature detection on AArch64 Darwin: rust-lang/stdarch#1695 - Tidying x86 `as_*` functions: rust-lang/stdarch#1696 - Fix typo and prettify comment: rust-lang/stdarch#1697 - add is_s390x_feature_detected: rust-lang/stdarch#1699 - add vec_add for s390x: rust-lang/stdarch#1703 - s390x: add vec_sub, vec_mul, vec_min, vec_max, vec_abs and vec_splats: rust-lang/stdarch#1704 - Fix build and CLI behaviour for stdarch-gen-arm. rust-lang/stdarch#1705 - Fix some test naming, and refactor stdarch-verify in general: rust-lang/stdarch#1707 - Update all stdarch crates to Rust 2024: rust-lang/stdarch#1710 - Add keylocker (kl and widekl) intrinsics and runtime feature detection: rust-lang/stdarch#1706 - S390x vector bitwise operations: rust-lang/stdarch#1709 - Update CI to FreeBSD 13.4: rust-lang/stdarch#1715 - Update wasm sub sat intrinsics for LLVM 20: rust-lang/stdarch#1719 - powerpc: use more target-independent llvm intrinsics (min, max, round, countlz): rust-lang/stdarch#1713 - S390x float rounding: rust-lang/stdarch#1712 - mark riscv intrinsics as safe: rust-lang/stdarch#1717 - change redundant transmutations of sign to cast_unsigned: rust-lang/stdarch#1711 - Fix - AArch64 Big Endian Intrinsics: rust-lang/stdarch#1708 - mark x86 intrinsics as safe: rust-lang/stdarch#1714 - AArch64: Add NEON fp16 intrinsics: rust-lang/stdarch#1726 - wasm: use simd_as for float to integer conversions: rust-lang/stdarch#1724 - nvptx: use simd_fmin and simd_fmax for minnum and maxnum: rust-lang/stdarch#1725 - powerpc: use simd_ceil and simd_floor: rust-lang/stdarch#1723 - Changed altivec.rs to new intrinsic declaration: rust-lang/stdarch#1722 - Remove some allow(unsafe_op_in_unsafe_fn)s and use target_feature 1.1 in examples: rust-lang/stdarch#1727 - fix - neon type signed unsigned conversions: rust-lang/stdarch#1729 - s390x_is_feature_detected!: detect more features: rust-lang/stdarch#1720 - Fix doctests failing due to unused_unsafe: rust-lang/stdarch#1731 - fix compilation on armebv7r-none-eabi: rust-lang/stdarch#1733 - wasm: update for rintf intrinsic rename: rust-lang/stdarch#1721 - powerpc: use the simd_fma intrinsic for vec_madd: rust-lang/stdarch#1734 - powerpc: use llvm.fshl for vec_rl: rust-lang/stdarch#1735 - s390x: add more intrinsics: rust-lang/stdarch#1728 - make _mm256_zero{upper,all} safe: rust-lang/stdarch#1736 - fix unnecessary unsafe error in doctest: rust-lang/stdarch#1739 - Feat - Aarch64 FEAT_FAMINMAX: rust-lang/stdarch#1732 - feat - FEAT_LUT neon instrinsics: rust-lang/stdarch#1741
lnicola
pushed a commit
to lnicola/rust-analyzer
that referenced
this pull request
Mar 10, 2025
Update stdarch Updates stdarch - core_arch: Add LoongArch basic intrinsics: rust-lang/stdarch#1688 - New ARM intrinsic generator: rust-lang/stdarch#1693 - Fix the bug in CMPINT intrinsics with IMM3=7: rust-lang/stdarch#1694 - Expand feature detection on AArch64 Darwin: rust-lang/stdarch#1695 - Tidying x86 `as_*` functions: rust-lang/stdarch#1696 - Fix typo and prettify comment: rust-lang/stdarch#1697 - add is_s390x_feature_detected: rust-lang/stdarch#1699 - add vec_add for s390x: rust-lang/stdarch#1703 - s390x: add vec_sub, vec_mul, vec_min, vec_max, vec_abs and vec_splats: rust-lang/stdarch#1704 - Fix build and CLI behaviour for stdarch-gen-arm. rust-lang/stdarch#1705 - Fix some test naming, and refactor stdarch-verify in general: rust-lang/stdarch#1707 - Update all stdarch crates to Rust 2024: rust-lang/stdarch#1710 - Add keylocker (kl and widekl) intrinsics and runtime feature detection: rust-lang/stdarch#1706 - S390x vector bitwise operations: rust-lang/stdarch#1709 - Update CI to FreeBSD 13.4: rust-lang/stdarch#1715 - Update wasm sub sat intrinsics for LLVM 20: rust-lang/stdarch#1719 - powerpc: use more target-independent llvm intrinsics (min, max, round, countlz): rust-lang/stdarch#1713 - S390x float rounding: rust-lang/stdarch#1712 - mark riscv intrinsics as safe: rust-lang/stdarch#1717 - change redundant transmutations of sign to cast_unsigned: rust-lang/stdarch#1711 - Fix - AArch64 Big Endian Intrinsics: rust-lang/stdarch#1708 - mark x86 intrinsics as safe: rust-lang/stdarch#1714 - AArch64: Add NEON fp16 intrinsics: rust-lang/stdarch#1726 - wasm: use simd_as for float to integer conversions: rust-lang/stdarch#1724 - nvptx: use simd_fmin and simd_fmax for minnum and maxnum: rust-lang/stdarch#1725 - powerpc: use simd_ceil and simd_floor: rust-lang/stdarch#1723 - Changed altivec.rs to new intrinsic declaration: rust-lang/stdarch#1722 - Remove some allow(unsafe_op_in_unsafe_fn)s and use target_feature 1.1 in examples: rust-lang/stdarch#1727 - fix - neon type signed unsigned conversions: rust-lang/stdarch#1729 - s390x_is_feature_detected!: detect more features: rust-lang/stdarch#1720 - Fix doctests failing due to unused_unsafe: rust-lang/stdarch#1731 - fix compilation on armebv7r-none-eabi: rust-lang/stdarch#1733 - wasm: update for rintf intrinsic rename: rust-lang/stdarch#1721 - powerpc: use the simd_fma intrinsic for vec_madd: rust-lang/stdarch#1734 - powerpc: use llvm.fshl for vec_rl: rust-lang/stdarch#1735 - s390x: add more intrinsics: rust-lang/stdarch#1728 - make _mm256_zero{upper,all} safe: rust-lang/stdarch#1736 - fix unnecessary unsafe error in doctest: rust-lang/stdarch#1739 - Feat - Aarch64 FEAT_FAMINMAX: rust-lang/stdarch#1732 - feat - FEAT_LUT neon instrinsics: rust-lang/stdarch#1741
tmeijn
pushed a commit
to tmeijn/dotfiles
that referenced
this pull request
May 19, 2025
This MR contains the following updates: | Package | Update | Change | |---|---|---| | [rust](https://github.com/rust-lang/rust) | minor | `1.86.0` -> `1.87.0` | MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot). **Proposed changes to behavior should be submitted there as MRs.** --- ### Release Notes <details> <summary>rust-lang/rust (rust)</summary> ### [`v1.87.0`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1870-2025-05-15) [Compare Source](rust-lang/rust@1.86.0...1.87.0) \========================== <a id="1.87.0-Language"></a> ## Language - [Stabilize `asm_goto` feature](rust-lang/rust#133870) - [Allow parsing open beginning ranges (`..EXPR`) after unary operators `!`, `-`, and `*`](rust-lang/rust#134900). - [Don't require method impls for methods with `Self: Sized` bounds in `impl`s for unsized types](rust-lang/rust#135480) - [Stabilize `feature(precise_capturing_in_traits)` allowing `use<...>` bounds on return position `impl Trait` in `trait`s](rust-lang/rust#138128) <a id="1.87.0-Compiler"></a> ## Compiler - [x86: make SSE2 required for i686 targets and use it to pass SIMD types](rust-lang/rust#135408) <a id="1.87.0-Platform-Support"></a> ## Platform Support - [Remove `i586-pc-windows-msvc` target](rust-lang/rust#137957) Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. [platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html <a id="1.87.0-Libraries"></a> ## Libraries - [Stabilize the anonymous pipe API](rust-lang/rust#127154) - [Add support for unbounded left/right shift operations](rust-lang/rust#129375) - [Print pointer metadata in `Debug` impl of raw pointers](rust-lang/rust#135080) - [`Vec::with_capacity` guarantees it allocates with the amount requested, even if `Vec::capacity` returns a different number.](rust-lang/rust#135933) - Most `std::arch` intrinsics which don't take pointer arguments can now be called from safe code if the caller has the appropriate target features already enabled (rust-lang/stdarch#1714, rust-lang/stdarch#1716, rust-lang/stdarch#1717) - [Undeprecate `env::home_dir`](rust-lang/rust#137327) - [Denote `ControlFlow` as `#[must_use]`](rust-lang/rust#137449) - [Macros such as `assert_eq!` and `vec!` now support `const {...}` expressions](rust-lang/rust#138162) <a id="1.87.0-Stabilized-APIs"></a> ## Stabilized APIs - [`Vec::extract_if`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.extract_if) - [`vec::ExtractIf`](https://doc.rust-lang.org/stable/std/vec/struct.ExtractIf.html) - [`LinkedList::extract_if`](https://doc.rust-lang.org/stable/std/collections/struct.LinkedList.html#method.extract_if) - [`linked_list::ExtractIf`](https://doc.rust-lang.org/stable/std/collections/linked_list/struct.ExtractIf.html) - [`<[T]>::split_off`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off) - [`<[T]>::split_off_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_mut) - [`<[T]>::split_off_first`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_first) - [`<[T]>::split_off_first_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_first_mut) - [`<[T]>::split_off_last`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_last) - [`<[T]>::split_off_last_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_last_mut) - [`String::extend_from_within`](https://doc.rust-lang.org/stable/alloc/string/struct.String.html#method.extend_from_within) - [`os_str::Display`](https://doc.rust-lang.org/stable/std/ffi/os_str/struct.Display.html) - [`OsString::display`](https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.display) - [`OsStr::display`](https://doc.rust-lang.org/stable/std/ffi/struct.OsStr.html#method.display) - [`io::pipe`](https://doc.rust-lang.org/stable/std/io/fn.pipe.html) - [`io::PipeReader`](https://doc.rust-lang.org/stable/std/io/struct.PipeReader.html) - [`io::PipeWriter`](https://doc.rust-lang.org/stable/std/io/struct.PipeWriter.html) - [`impl From<PipeReader> for OwnedHandle`](https://doc.rust-lang.org/stable/std/os/windows/io/struct.OwnedHandle.html#impl-From%3CPipeReader%3E-for-OwnedHandle) - [`impl From<PipeWriter> for OwnedHandle`](https://doc.rust-lang.org/stable/std/os/windows/io/struct.OwnedHandle.html#impl-From%3CPipeWriter%3E-for-OwnedHandle) - [`impl From<PipeReader> for Stdio`](https://doc.rust-lang.org/stable/std/process/struct.Stdio.html) - [`impl From<PipeWriter> for Stdio`](https://doc.rust-lang.org/stable/std/process/struct.Stdio.html#impl-From%3CPipeWriter%3E-for-Stdio) - [`impl From<PipeReader> for OwnedFd`](https://doc.rust-lang.org/stable/std/os/fd/struct.OwnedFd.html#impl-From%3CPipeReader%3E-for-OwnedFd) - [`impl From<PipeWriter> for OwnedFd`](https://doc.rust-lang.org/stable/std/os/fd/struct.OwnedFd.html#impl-From%3CPipeWriter%3E-for-OwnedFd) - [`Box<MaybeUninit<T>>::write`](https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#method.write) - [`impl TryFrom<Vec<u8>> for String`](https://doc.rust-lang.org/stable/std/string/struct.String.html#impl-TryFrom%3CVec%3Cu8%3E%3E-for-String) - [`<*const T>::offset_from_unsigned`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from_unsigned) - [`<*const T>::byte_offset_from_unsigned`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.byte_offset_from_unsigned) - [`<*mut T>::offset_from_unsigned`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from_unsigned-1) - [`<*mut T>::byte_offset_from_unsigned`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.byte_offset_from_unsigned-1) - [`NonNull::offset_from_unsigned`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.offset_from_unsigned) - [`NonNull::byte_offset_from_unsigned`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.byte_offset_from_unsigned) - [`<uN>::cast_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.cast_signed) - [`NonZero::<uN>::cast_signed`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.cast_signed-5). - [`<iN>::cast_unsigned`](https://doc.rust-lang.org/stable/std/primitive.isize.html#method.cast_unsigned). - [`NonZero::<iN>::cast_unsigned`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.cast_unsigned-5). - [`<uN>::is_multiple_of`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.is_multiple_of) - [`<uN>::unbounded_shl`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.unbounded_shl) - [`<uN>::unbounded_shr`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.unbounded_shr) - [`<iN>::unbounded_shl`](https://doc.rust-lang.org/stable/std/primitive.isize.html#method.unbounded_shl) - [`<iN>::unbounded_shr`](https://doc.rust-lang.org/stable/std/primitive.isize.html#method.unbounded_shr) - [`<iN>::midpoint`](https://doc.rust-lang.org/stable/std/primitive.isize.html#method.midpoint) - [`<str>::from_utf8`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8) - [`<str>::from_utf8_mut`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8\_mut) - [`<str>::from_utf8_unchecked`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8\_unchecked) - [`<str>::from_utf8_unchecked_mut`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8\_unchecked_mut) These previously stable APIs are now stable in const contexts: - [`core::str::from_utf8_mut`](https://doc.rust-lang.org/stable/std/str/fn.from_utf8\_mut.html) - [`<[T]>::copy_from_slice`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.copy_from_slice) - [`SocketAddr::set_ip`](https://doc.rust-lang.org/stable/std/net/enum.SocketAddr.html#method.set_ip) - [`SocketAddr::set_port`](https://doc.rust-lang.org/stable/std/net/enum.SocketAddr.html#method.set_port), - [`SocketAddrV4::set_ip`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV4.html#method.set_ip) - [`SocketAddrV4::set_port`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV4.html#method.set_port), - [`SocketAddrV6::set_ip`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_ip) - [`SocketAddrV6::set_port`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_port) - [`SocketAddrV6::set_flowinfo`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_flowinfo) - [`SocketAddrV6::set_scope_id`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_scope_id) - [`char::is_digit`](https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_digit) - [`char::is_whitespace`](https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_whitespace) - [`<[[T; N]]>::as_flattened`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_flattened) - [`<[[T; N]]>::as_flattened_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_flattened_mut) - [`String::into_bytes`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.into_bytes) - [`String::as_str`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_str) - [`String::capacity`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.capacity) - [`String::as_bytes`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_bytes) - [`String::len`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.len) - [`String::is_empty`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.is_empty) - [`String::as_mut_str`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_mut_str) - [`String::as_mut_vec`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_mut_vec) - [`Vec::as_ptr`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_ptr) - [`Vec::as_slice`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_slice) - [`Vec::capacity`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.capacity) - [`Vec::len`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.len) - [`Vec::is_empty`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.is_empty) - [`Vec::as_mut_slice`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_mut_slice) - [`Vec::as_mut_ptr`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_mut_ptr) <a id="1.87.0-Cargo"></a> ## Cargo - [Add terminal integration via ANSI OSC 9;4 sequences](rust-lang/cargo#14615) - [chore: bump openssl to v3](rust-lang/cargo#15232) - [feat(package): add --exclude-lockfile flag](rust-lang/cargo#15234) <a id="1.87.0-Compatibility-Notes"></a> ## Compatibility Notes - [Rust now raises an error for macro invocations inside the `#![crate_name]` attribute](rust-lang/rust#127581) - [Unstable fields are now always considered to be inhabited](rust-lang/rust#133889) - [Macro arguments of unary operators followed by open beginning ranges may now be matched differently](rust-lang/rust#134900) - [Make `Debug` impl of raw pointers print metadata if present](rust-lang/rust#135080) - [Warn against function pointers using unsupported ABI strings in dependencies](rust-lang/rust#135767) - [Associated types on `dyn` types are no longer deduplicated](rust-lang/rust#136458) - [Forbid attributes on `..` inside of struct patterns (`let Struct { #[attribute] .. }) =`](rust-lang/rust#136490) - [Make `ptr_cast_add_auto_to_object` lint into hard error](rust-lang/rust#136764) - Many `std::arch` intrinsics are now safe to call in some contexts, there may now be new `unused_unsafe` warnings in existing codebases. - [Limit `width` and `precision` formatting options to 16 bits on all targets](rust-lang/rust#136932) - [Turn order dependent trait objects future incompat warning into a hard error](rust-lang/rust#136968) - [Denote `ControlFlow` as `#[must_use]`](rust-lang/rust#137449) - [Windows: The standard library no longer links `advapi32`, except on win7.](rust-lang/rust#138233) Code such as C libraries that were relying on this assumption may need to explicitly link advapi32. - [Proc macros can no longer observe expanded `cfg(true)` attributes.](rust-lang/rust#138844) - [Start changing the internal representation of pasted tokens](rust-lang/rust#124141). Certain invalid declarative macros that were previously accepted in obscure circumstances are now correctly rejected by the compiler. Use of a `tt` fragment specifier can often fix these macros. - [Don't allow flattened format_args in const.](rust-lang/rust#139624) <a id="1.87.0-Internal-Changes"></a> ## Internal Changes These changes do not affect any public interfaces of Rust, but they represent significant improvements to the performance or internals of rustc and related tools. - [Update to LLVM 20](rust-lang/rust#135763) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC4xMS4xOSIsInVwZGF0ZWRJblZlciI6IjQwLjExLjE5IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
wip-sync
pushed a commit
to NetBSD/pkgsrc-wip
that referenced
this pull request
May 20, 2025
Pkgsrc changes: * patches adjustments to adapt to upstream changes & new versions of included crates * associated checksums++ Upstream changes relative to 1.86.0: Version 1.87.0 (2025-05-15) ========================== Language -------- - [Stabilize `asm_goto` feature] (rust-lang/rust#133870) - [Allow parsing open beginning ranges (`..EXPR`) after unary operators `!`, `~`, `-`, and `*`}] (rust-lang/rust#134900). - [Don't require method impls for methods with `Self: Sized` bounds in `impl`s for unsized types] (rust-lang/rust#135480) - [Stabilize `feature(precise_capturing_in_traits)` allowing `use<...>` bounds on return position `impl Trait` in `trait`s] (rust-lang/rust#138128) Compiler -------- - [x86: make SSE2 required for i686 targets and use it to pass SIMD types] (rust-lang/rust#135408) Platform Support ---------------- - [Remove `i586-pc-windows-msvc` target] (rust-lang/rust#137957) Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support. [platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html Libraries --------- - [Stabilize the anonymous pipe API] (rust-lang/rust#127154) - [Add support for unbounded left/right shift operations] (rust-lang/rust#129375) - [Print pointer metadata in `Debug` impl of raw pointers] (rust-lang/rust#135080) - [`Vec::with_capacity` guarantees it allocates with the amount requested, even if `Vec::capacity` returns a different number.] (rust-lang/rust#135933) - Most `std::arch` intrinsics which don't take pointer arguments can now be called from safe code if the caller has the appropriate target features already enabled (rust-lang/stdarch#1714, rust-lang/stdarch#1716, rust-lang/stdarch#1717) - [Undeprecate `env::home_dir`] (rust-lang/rust#137327) - [Denote `ControlFlow` as `#[must_use]`] (rust-lang/rust#137449) - [Macros such as `assert_eq!` and `vec!` now support `const {...}` expressions] (rust-lang/rust#138162) Stabilized APIs --------------- - [`Vec::extract_if`] (https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.extract_if) - [`vec::ExtractIf`] (https://doc.rust-lang.org/stable/std/vec/struct.ExtractIf.html) - [`LinkedList::extract_if`] (https://doc.rust-lang.org/stable/std/collections/struct.LinkedList.html#method.extract_if) - [`linked_list::ExtractIf`] (https://doc.rust-lang.org/stable/std/collections/linked_list/struct.ExtractIf.html) - [`<[T]>::split_off`] (https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off) - [`<[T]>::split_off_mut`] (https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_mut) - [`<[T]>::split_off_first`] (https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_first) - [`<[T]>::split_off_first_mut`] (https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_first_mut) - [`<[T]>::split_off_last`] (https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_last) - [`<[T]>::split_off_last_mut`] (https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_last_mut) - [`String::extend_from_within`] (https://doc.rust-lang.org/stable/alloc/string/struct.String.html#method.extend_from_within) - [`os_str::Display`] (https://doc.rust-lang.org/stable/std/ffi/os_str/struct.Display.html) - [`OsString::display`] (https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.display) - [`OsStr::display`] (https://doc.rust-lang.org/stable/std/ffi/struct.OsStr.html#method.display) - [`io::pipe`] (https://doc.rust-lang.org/stable/std/io/fn.pipe.html) - [`io::PipeReader`] (https://doc.rust-lang.org/stable/std/io/struct.PipeReader.html) - [`io::PipeWriter`] (https://doc.rust-lang.org/stable/std/io/struct.PipeWriter.html) - [`impl From<PipeReader> for OwnedHandle`] (https://doc.rust-lang.org/stable/std/os/windows/io/struct.OwnedHandle.html#impl-From%3CPipeReader%3E-for-OwnedHandle) - [`impl From<PipeWriter> for OwnedHandle`] (https://doc.rust-lang.org/stable/std/os/windows/io/struct.OwnedHandle.html#impl-From%3CPipeWriter%3E-for-OwnedHandle) - [`impl From<PipeReader> for Stdio`] (https://doc.rust-lang.org/stable/std/process/struct.Stdio.html) - [`impl From<PipeWriter> for Stdio`] (https://doc.rust-lang.org/stable/std/process/struct.Stdio.html#impl-From%3CPipeWriter%3E-for-Stdio) - [`impl From<PipeReader> for OwnedFd`] (https://doc.rust-lang.org/stable/std/os/fd/struct.OwnedFd.html#impl-From%3CPipeReader%3E-for-OwnedFd) - [`impl From<PipeWriter> for OwnedFd`] (https://doc.rust-lang.org/stable/std/os/fd/struct.OwnedFd.html#impl-From%3CPipeWriter%3E-for-OwnedFd) - [`Box<MaybeUninit<T>>::write`] (https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#method.write) - [`impl TryFrom<Vec<u8>> for String`] (https://doc.rust-lang.org/stable/std/string/struct.String.html#impl-TryFrom%3CVec%3Cu8%3E%3E-for-String) - [`<*const T>::offset_from_unsigned`] (https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from_unsigned) - [`<*const T>::byte_offset_from_unsigned`] (https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.byte_offset_from_unsigned) - [`<*mut T>::offset_from_unsigned`] (https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from_unsigned-1) - [`<*mut T>::byte_offset_from_unsigned`] (https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.byte_offset_from_unsigned-1) - [`NonNull::offset_from_unsigned`] (https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.offset_from_unsigned) - [`NonNull::byte_offset_from_unsigned`] (https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.byte_offset_from_unsigned) - [`<uN>::cast_signed`] (https://doc.rust-lang.org/stable/std/primitive.usize.html#method.cast_signed) - [`NonZero::<uN>::cast_signed`] (https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.cast_signed-5). - [`<iN>::cast_unsigned`] (https://doc.rust-lang.org/stable/std/primitive.isize.html#method.cast_unsigned). - [`NonZero::<iN>::cast_unsigned`] (https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.cast_unsigned-5). - [`<uN>::is_multiple_of`] (https://doc.rust-lang.org/stable/std/primitive.usize.html#method.is_multiple_of) - [`<uN>::unbounded_shl`] (https://doc.rust-lang.org/stable/std/primitive.usize.html#method.unbounded_shl) - [`<uN>::unbounded_shr`] (https://doc.rust-lang.org/stable/std/primitive.usize.html#method.unbounded_shr) - [`<iN>::unbounded_shl`] (https://doc.rust-lang.org/stable/std/primitive.isize.html#method.unbounded_shl) - [`<iN>::unbounded_shr`] (https://doc.rust-lang.org/stable/std/primitive.isize.html#method.unbounded_shr) - [`<iN>::midpoint`] (https://doc.rust-lang.org/stable/std/primitive.isize.html#method.midpoint) - [`<str>::from_utf8`] (https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8) - [`<str>::from_utf8_mut`] (https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8_mut) - [`<str>::from_utf8_unchecked`] (https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8_unchecked) - [`<str>::from_utf8_unchecked_mut`] (https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8_unchecked_mut) These previously stable APIs are now stable in const contexts: - [`core::str::from_utf8_mut`] (https://doc.rust-lang.org/stable/std/str/fn.from_utf8_mut.html) - [`<[T]>::copy_from_slice`] (https://doc.rust-lang.org/stable/std/primitive.slice.html#method.copy_from_slice) - [`SocketAddr::set_ip`] (https://doc.rust-lang.org/stable/std/net/enum.SocketAddr.html#method.set_ip) - [`SocketAddr::set_port`] (https://doc.rust-lang.org/stable/std/net/enum.SocketAddr.html#method.set_port), - [`SocketAddrV4::set_ip`] (https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV4.html#method.set_ip) - [`SocketAddrV4::set_port`] (https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV4.html#method.set_port), - [`SocketAddrV6::set_ip`] (https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_ip) - [`SocketAddrV6::set_port`] (https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_port) - [`SocketAddrV6::set_flowinfo`] (https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_flowinfo) - [`SocketAddrV6::set_scope_id`] (https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_scope_id) - [`char::is_digit`] (https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_digit) - [`char::is_whitespace`] (https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_whitespace) - [`<[[T; N]]>::as_flattened`] (https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_flattened) - [`<[[T; N]]>::as_flattened_mut`] (https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_flattened_mut) - [`String::into_bytes`] (https://doc.rust-lang.org/stable/std/string/struct.String.html#method.into_bytes) - [`String::as_str`] (https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_str) - [`String::capacity`] (https://doc.rust-lang.org/stable/std/string/struct.String.html#method.capacity) - [`String::as_bytes`] (https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_bytes) - [`String::len`] (https://doc.rust-lang.org/stable/std/string/struct.String.html#method.len) - [`String::is_empty`] (https://doc.rust-lang.org/stable/std/string/struct.String.html#method.is_empty) - [`String::as_mut_str`] (https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_mut_str) - [`String::as_mut_vec`] (https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_mut_vec) - [`Vec::as_ptr`] (https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_ptr) - [`Vec::as_slice`] (https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_slice) - [`Vec::capacity`] (https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.capacity) - [`Vec::len`] (https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.len) - [`Vec::is_empty`] (https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.is_empty) - [`Vec::as_mut_slice`] (https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_mut_slice) - [`Vec::as_mut_ptr`] (https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_mut_ptr) Cargo ----- - [Add terminal integration via ANSI OSC 9;4 sequences] (rust-lang/cargo#14615) - [chore: bump openssl to v3] (rust-lang/cargo#15232) - [feat(package): add --exclude-lockfile flag] (rust-lang/cargo#15234) Compatibility Notes ------------------- - [Rust now raises an error for macro invocations inside the `#![crate_name]` attribute] (rust-lang/rust#127581) - [Unstable fields are now always considered to be inhabited] (rust-lang/rust#133889) - [Macro arguments of unary operators followed by open beginning ranges may now be matched differently] (rust-lang/rust#134900) - [Make `Debug` impl of raw pointers print metadata if present] (rust-lang/rust#135080) - [Warn against function pointers using unsupported ABI strings in dependencies] (rust-lang/rust#135767) - [Associated types on `dyn` types are no longer deduplicated] (rust-lang/rust#136458) - [Forbid attributes on `..` inside of struct patterns (`let Struct { #[attribute] .. }) =`] (rust-lang/rust#136490) - [Make `ptr_cast_add_auto_to_object` lint into hard error] (rust-lang/rust#136764) - Many `std::arch` intrinsics are now safe to call in some contexts, there may now be new `unused_unsafe` warnings in existing codebases. - [Limit `width` and `precision` formatting options to 16 bits on all targets] (rust-lang/rust#136932) - [Turn order dependent trait objects future incompat warning into a hard error] (rust-lang/rust#136968) - [Denote `ControlFlow` as `#[must_use]`] (rust-lang/rust#137449) - [Windows: The standard library no longer links `advapi32`, except on win7.] (rust-lang/rust#138233) Code such as C libraries that were relying on this assumption may need to explicitly link advapi32. - [Proc macros can no longer observe expanded `cfg (true)` attributes.](rust-lang/rust#138844) - [Start changing the internal representation of pasted tokens] (rust-lang/rust#124141). Certain invalid declarative macros that were previously accepted in obscure circumstances are now correctly rejected by the compiler. Use of a `tt` fragment specifier can often fix these macros. - [Don't allow flattened format_args in const.] (rust-lang/rust#139624) Internal Changes ---------------- These changes do not affect any public interfaces of Rust, but they represent significant improvements to the performance or internals of rustc and related tools. - [Update to LLVM 20] (rust-lang/rust#135763)
netbsd-srcmastr
pushed a commit
to NetBSD/pkgsrc
that referenced
this pull request
Aug 25, 2025
Prepared by he@ in wip/rust188.
Changes:
1.88
Language
Stabilize #![feature(let_chains)] in the 2024 edition. This feature allows &&-chaining let statements inside if and while, allowing intermixture with boolean expressions. The patterns inside the let sub-expressions can be irrefutable or refutable.
Stabilize #![feature(naked_functions)]. Naked functions allow writing functions with no compiler-generated epilogue and prologue, allowing full control over the generated assembly for a particular function.
Stabilize #![feature(cfg_boolean_literals)]. This allows using boolean literals as cfg predicates, e.g. #[cfg(true)] and #[cfg(false)].
Fully de-stabilize the #[bench] attribute. Usage of #[bench] without #![feature(custom_test_frameworks)] already triggered a deny-by-default future-incompatibility lint since Rust 1.77, but will now become a hard error.
Add warn-by-default dangerous_implicit_autorefs lint against implicit autoref of raw pointer dereference. The lint will be bumped to deny-by-default in the next version of Rust.
Add invalid_null_arguments lint to prevent invalid usage of null pointers. This lint is uplifted from clippy::invalid_null_ptr_usage.
Change trait impl candidate preference for builtin impls and trivial where-clauses.
Check types of generic const parameter defaults
Compiler
Stabilize -Cdwarf-version for selecting the version of DWARF debug information to generate.
Platform Support
Demote i686-pc-windows-gnu to Tier 2.
Refer to Rust’s platform support page for more information on Rust’s tiered platform support.
Libraries
Remove backticks from #[should_panic] test failure message.
Guarantee that [T; N]::from_fn is generated in order of increasing indices., for those passing it a stateful closure.
The libtest flag --nocapture is deprecated in favor of the more consistent --no-capture flag.
Guarantee that {float}::NAN is a quiet NaN.
Stabilized APIs
Cell::update
impl Default for *const T
impl Default for *mut T
HashMap::extract_if
HashSet::extract_if
proc_macro::Span::line
proc_macro::Span::column
proc_macro::Span::start
proc_macro::Span::end
proc_macro::Span::file
proc_macro::Span::local_file
These previously stable APIs are now stable in const contexts:
NonNull<T>::replace
<*mut T>::replace
std::ptr::swap_nonoverlapping
Cell::{replace, get, get_mut, from_mut, as_slice_of_cells}
Cargo
Stabilize automatic garbage collection.
use zlib-rs for gzip compression in rust code
Rustdoc
Doctests can be ignored based on target names using ignore-* attributes.
Stabilize the --test-runtool and --test-runtool-arg CLI options to specify a program (like qemu) and its arguments to run a doctest.
Compatibility Notes
Finish changing the internal representation of pasted tokens. Certain invalid declarative macros that were previously accepted in obscure circumstances are now correctly rejected by the compiler. Use of a tt fragment specifier can often fix these macros.
Fully de-stabilize the #[bench] attribute. Usage of #[bench] without #![feature(custom_test_frameworks)] already triggered a deny-by-default future-incompatibility lint since Rust 1.77, but will now become a hard error.
Fix borrow checking some always-true patterns. The borrow checker was overly permissive in some cases, allowing programs that shouldn’t have compiled.
Update the minimum external LLVM to 19.
Make it a hard error to use a vector type with a non-Rust ABI without enabling the required target feature.
1.87
Language
Stabilize asm_goto feature
Allow parsing open beginning ranges (..EXPR) after unary operators !, -, and *.
Don’t require method impls for methods with Self: Sized bounds in impls for unsized types
Stabilize feature(precise_capturing_in_traits) allowing use<...> bounds on return position impl Trait in traits
Compiler
x86: make SSE2 required for i686 targets and use it to pass SIMD types
Platform Support
Remove i586-pc-windows-msvc target
Refer to Rust’s platform support page for more information on Rust’s tiered platform support.
Libraries
Stabilize the anonymous pipe API
Add support for unbounded left/right shift operations
Print pointer metadata in Debug impl of raw pointers
Vec::with_capacity guarantees it allocates with the amount requested, even if Vec::capacity returns a different number.
Most std::arch intrinsics which don’t take pointer arguments can now be called from safe code if the caller has the appropriate target features already enabled (rust-lang/stdarch#1714, rust-lang/stdarch#1716, rust-lang/stdarch#1717)
Undeprecate env::home_dir
Denote ControlFlow as #[must_use]
Macros such as assert_eq! and vec! now support const {...} expressions
Stabilized APIs
Vec::extract_if
vec::ExtractIf
LinkedList::extract_if
linked_list::ExtractIf
<[T]>::split_off
<[T]>::split_off_mut
<[T]>::split_off_first
<[T]>::split_off_first_mut
<[T]>::split_off_last
<[T]>::split_off_last_mut
String::extend_from_within
os_str::Display
OsString::display
OsStr::display
io::pipe
io::PipeReader
io::PipeWriter
impl From<PipeReader> for OwnedHandle
impl From<PipeWriter> for OwnedHandle
impl From<PipeReader> for Stdio
impl From<PipeWriter> for Stdio
impl From<PipeReader> for OwnedFd
impl From<PipeWriter> for OwnedFd
Box<MaybeUninit<T>>::write
impl TryFrom<Vec<u8>> for String
<*const T>::offset_from_unsigned
<*const T>::byte_offset_from_unsigned
<*mut T>::offset_from_unsigned
<*mut T>::byte_offset_from_unsigned
NonNull::offset_from_unsigned
NonNull::byte_offset_from_unsigned
<uN>::cast_signed
NonZero::<uN>::cast_signed.
<iN>::cast_unsigned.
NonZero::<iN>::cast_unsigned.
<uN>::is_multiple_of
<uN>::unbounded_shl
<uN>::unbounded_shr
<iN>::unbounded_shl
<iN>::unbounded_shr
<iN>::midpoint
<str>::from_utf8
<str>::from_utf8_mut
<str>::from_utf8_unchecked
<str>::from_utf8_unchecked_mut
These previously stable APIs are now stable in const contexts:
core::str::from_utf8_mut
<[T]>::copy_from_slice
SocketAddr::set_ip
SocketAddr::set_port,
SocketAddrV4::set_ip
SocketAddrV4::set_port,
SocketAddrV6::set_ip
SocketAddrV6::set_port
SocketAddrV6::set_flowinfo
SocketAddrV6::set_scope_id
char::is_digit
char::is_whitespace
<[[T; N]]>::as_flattened
<[[T; N]]>::as_flattened_mut
String::into_bytes
String::as_str
String::capacity
String::as_bytes
String::len
String::is_empty
String::as_mut_str
String::as_mut_vec
Vec::as_ptr
Vec::as_slice
Vec::capacity
Vec::len
Vec::is_empty
Vec::as_mut_slice
Vec::as_mut_ptr
Cargo
Add terminal integration via ANSI OSC 9;4 sequences
chore: bump openssl to v3
feat(package): add –exclude-lockfile flag
Compatibility Notes
Rust now raises an error for macro invocations inside the #![crate_name] attribute
Unstable fields are now always considered to be inhabited
Macro arguments of unary operators followed by open beginning ranges may now be matched differently
Make Debug impl of raw pointers print metadata if present
Warn against function pointers using unsupported ABI strings in dependencies
Associated types on dyn types are no longer deduplicated
Forbid attributes on .. inside of struct patterns (let Struct { #[attribute] .. }) =
Make ptr_cast_add_auto_to_object lint into hard error
Many std::arch intrinsics are now safe to call in some contexts, there may now be new unused_unsafe warnings in existing codebases.
Limit width and precision formatting options to 16 bits on all targets
Turn order dependent trait objects future incompat warning into a hard error
Denote ControlFlow as #[must_use]
Windows: The standard library no longer links advapi32, except on win7. Code such as C libraries that were relying on this assumption may need to explicitly link advapi32.
Proc macros can no longer observe expanded cfg(true) attributes.
Start changing the internal representation of pasted tokens. Certain invalid declarative macros that were previously accepted in obscure circumstances are now correctly rejected by the compiler. Use of a tt fragment specifier can often fix these macros.
Don’t allow flattened format_args in const.
Internal Changes
These changes do not affect any public interfaces of Rust, but they represent significant improvements to the performance or internals of rustc and related tools.
Update to LLVM 20
renovate bot
added a commit
to winnow-rs/winnow
that referenced
this pull request
Sep 29, 2025
Coming soon: The Renovate bot (GitHub App) will be renamed to Mend. PRs
from Renovate will soon appear from 'Mend'. Learn more
[here](https://github.com/renovatebot/renovate/discussions/37842).
This PR contains the following updates:
| Package | Update | Change |
|---|---|---|
| [STABLE](https://github.com/rust-lang/rust) | minor |
`1.80.0` -> `1.90` |
---
### Release Notes
<details>
<summary>rust-lang/rust (STABLE)</summary>
###
[`v1.90`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1900-2025-09-18)
[Compare
Source](https://github.com/rust-lang/rust/compare/1.89.0...1.90.0)
\===========================
<a id="1.90-Language"></a>
## Language
- [Split up the `unknown_or_malformed_diagnostic_attributes`
lint](https://github.com/rust-lang/rust/pull/140717). This lint
has been split up into four finer-grained lints, with
`unknown_or_malformed_diagnostic_attributes` now being the lint group
that contains these lints:
1. `unknown_diagnostic_attributes`: unknown to the current compiler
2. `misplaced_diagnostic_attributes`: placed on the wrong item
3. `malformed_diagnostic_attributes`: malformed attribute syntax or
options
4. `malformed_diagnostic_format_literals`: malformed format string
literal
- [Allow constants whose final value has references to mutable/external
memory, but reject such constants as
patterns](https://github.com/rust-lang/rust/pull/140942)
- [Allow volatile access to non-Rust memory, including address
0](https://github.com/rust-lang/rust/pull/141260)
<a id="1.90-Compiler"></a>
## Compiler
- [Use `lld` by default on
`x86_64-unknown-linux-gnu`](https://github.com/rust-lang/rust/pull/140525).
- [Tier 3 `musl` targets now link dynamically by
default](https://github.com/rust-lang/rust/pull/144410).
Affected targets:
- `mips64-unknown-linux-muslabi64`
- `powerpc64-unknown-linux-musl`
- `powerpc-unknown-linux-musl`
- `powerpc-unknown-linux-muslspe`
- `riscv32gc-unknown-linux-musl`
- `s390x-unknown-linux-musl`
- `thumbv7neon-unknown-linux-musleabihf`
<a id="1.90-Platform-Support"></a>
## Platform Support
- [Demote `x86_64-apple-darwin` to Tier 2 with host
tools](https://github.com/rust-lang/rust/pull/145252)
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
[platform-support-doc]:
https://doc.rust-lang.org/rustc/platform-support.html
<a id="1.90-Libraries"></a>
## Libraries
- [Stabilize
`u*::{checked,overflowing,saturating,wrapping}_sub_signed`](https://github.com/rust-lang/rust/issues/126043)
- [Allow comparisons between `CStr`, `CString`, and
`Cow<CStr>`](https://github.com/rust-lang/rust/pull/137268)
- [Remove some unsized tuple impls since unsized tuples can't be
constructed](https://github.com/rust-lang/rust/pull/138340)
- [Set `MSG_NOSIGNAL` for
`UnixStream`](https://github.com/rust-lang/rust/pull/140005)
- [`proc_macro::Ident::new` now supports
`$crate`.](https://github.com/rust-lang/rust/pull/141996)
- [Guarantee the pointer returned from `Thread::into_raw` has at least 8
bytes of
alignment](https://github.com/rust-lang/rust/pull/143859)
<a id="1.90-Stabilized-APIs"></a>
## Stabilized APIs
-
[`u{n}::checked_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.checked_sub_signed)
-
[`u{n}::overflowing_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.overflowing_sub_signed)
-
[`u{n}::saturating_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.saturating_sub_signed)
-
[`u{n}::wrapping_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.wrapping_sub_signed)
- [`impl Copy for
IntErrorKind`](https://doc.rust-lang.org/stable/std/num/enum.IntErrorKind.html#impl-Copy-for-IntErrorKind)
- [`impl Hash for
IntErrorKind`](https://doc.rust-lang.org/stable/std/num/enum.IntErrorKind.html#impl-Hash-for-IntErrorKind)
- [`impl PartialEq<&CStr> for
CStr`](https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3C%26CStr%3E-for-CStr)
- [`impl PartialEq<CString> for
CStr`](https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3CCString%3E-for-CStr)
- [`impl PartialEq<Cow<CStr>> for
CStr`](https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3CCow%3C'_,+CStr%3E%3E-for-CStr)
- [`impl PartialEq<&CStr> for
CString`](https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3C%26CStr%3E-for-CString)
- [`impl PartialEq<CStr> for
CString`](https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3CCStr%3E-for-CString)
- [`impl PartialEq<Cow<CStr>> for
CString`](https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3CCow%3C'_,+CStr%3E%3E-for-CString)
- [`impl PartialEq<&CStr> for
Cow<CStr>`](https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3C%26CStr%3E-for-Cow%3C'_,+CStr%3E)
- [`impl PartialEq<CStr> for
Cow<CStr>`](https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3CCStr%3E-for-Cow%3C'_,+CStr%3E)
- [`impl PartialEq<CString> for
Cow<CStr>`](https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3CCString%3E-for-Cow%3C'_,+CStr%3E)
These previously stable APIs are now stable in const contexts:
-
[`<[T]>::reverse`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.reverse)
-
[`f32::floor`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.floor)
-
[`f32::ceil`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.ceil)
-
[`f32::trunc`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.trunc)
-
[`f32::fract`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.fract)
-
[`f32::round`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.round)
-
[`f32::round_ties_even`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.round_ties_even)
-
[`f64::floor`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.floor)
-
[`f64::ceil`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.ceil)
-
[`f64::trunc`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.trunc)
-
[`f64::fract`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.fract)
-
[`f64::round`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.round)
-
[`f64::round_ties_even`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.round_ties_even)
<a id="1.90-Cargo"></a>
## Cargo
- [Add `http.proxy-cainfo` config for proxy
certs](https://github.com/rust-lang/cargo/pull/15374/)
- [Use `gix` for `cargo
package`](https://github.com/rust-lang/cargo/pull/15534/)
- [feat(publish): Stabilize multi-package
publishing](https://github.com/rust-lang/cargo/pull/15636/)
<a id="1.90-Rustdoc"></a>
## Rustdoc
- [Add ways to collapse all impl
blocks](https://github.com/rust-lang/rust/pull/141663).
Previously the "Summary" button and "-" keyboard shortcut would never
collapse `impl` blocks, now they do when shift is held
- [Display unsafe attributes with `unsafe()`
wrappers](https://github.com/rust-lang/rust/pull/143662)
<a id="1.90-Compatibility-Notes"></a>
## Compatibility Notes
- [Use `lld` by default on
`x86_64-unknown-linux-gnu`](https://github.com/rust-lang/rust/pull/140525).
See also
<https://blog.rust-lang.org/2025/09/01/rust-lld-on-1.90.0-stable/>.
- [Make `core::iter::Fuse`'s `Default` impl construct `I::default()`
internally as promised in the docs instead of always being
empty](https://github.com/rust-lang/rust/pull/140985)
- [Set `MSG_NOSIGNAL` for
`UnixStream`](https://github.com/rust-lang/rust/pull/140005)
This may change program behavior but results in the same behavior as
other primitives (e.g., stdout, network sockets).
Programs relying on signals to terminate them should update handling of
sockets to handle errors on write by exiting.
- [On Unix `std::env::home_dir` will use the fallback if the `HOME`
environment variable is
empty](https://github.com/rust-lang/rust/pull/141840)
- We now [reject unsupported `extern "{abi}"`s consistently in all
positions](https://github.com/rust-lang/rust/pull/142134). This
primarily affects the use of implementing traits on an `extern "{abi}"`
function pointer, like `extern "stdcall" fn()`, on a platform that
doesn't support that, like aarch64-unknown-linux-gnu. Direct usage of
these unsupported ABI strings by declaring or defining functions was
already rejected, so this is only a change for consistency.
- [const-eval: error when initializing a static writes to that
static](https://github.com/rust-lang/rust/pull/143084)
- [Check that the `proc_macro_derive` macro has correct arguments when
applied to the crate
root](https://github.com/rust-lang/rust/pull/143607)
###
[`v1.89`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1890-2025-08-07)
[Compare
Source](https://github.com/rust-lang/rust/compare/1.88.0...1.89.0)
\==========================
<a id="1.89.0-Language"></a>
## Language
- [Stabilize explicitly inferred const arguments
(`feature(generic_arg_infer)`)](https://github.com/rust-lang/rust/pull/141610)
- [Add a warn-by-default `mismatched_lifetime_syntaxes`
lint.](https://github.com/rust-lang/rust/pull/138677)
This lint detects when the same lifetime is referred to by different
syntax categories between function arguments and return values, which
can be confusing to read, especially in unsafe code.
This lint supersedes the warn-by-default `elided_named_lifetimes` lint.
- [Expand `unpredictable_function_pointer_comparisons` to also lint on
function pointer comparisons in external
macros](https://github.com/rust-lang/rust/pull/134536)
- [Make the `dangerous_implicit_autorefs` lint
deny-by-default](https://github.com/rust-lang/rust/pull/141661)
- [Stabilize the avx512 target
features](https://github.com/rust-lang/rust/pull/138940)
- [Stabilize `kl` and `widekl` target features for
x86](https://github.com/rust-lang/rust/pull/140766)
- [Stabilize `sha512`, `sm3` and `sm4` target features for
x86](https://github.com/rust-lang/rust/pull/140767)
- [Stabilize LoongArch target features `f`, `d`, `frecipe`, `lasx`,
`lbt`, `lsx`, and
`lvz`](https://github.com/rust-lang/rust/pull/135015)
- [Remove `i128` and `u128` from
`improper_ctypes_definitions`](https://github.com/rust-lang/rust/pull/137306)
- [Stabilize `repr128` (`#[repr(u128)]`,
`#[repr(i128)]`)](https://github.com/rust-lang/rust/pull/138285)
- [Allow `#![doc(test(attr(..)))]`
everywhere](https://github.com/rust-lang/rust/pull/140560)
- [Extend temporary lifetime extension to also go through tuple struct
and tuple variant
constructors](https://github.com/rust-lang/rust/pull/140593)
- [`extern "C"` functions on the `wasm32-unknown-unknown` target now
have a standards compliant
ABI](https://blog.rust-lang.org/2025/04/04/c-abi-changes-for-wasm32-unknown-unknown/)
<a id="1.89.0-Compiler"></a>
## Compiler
- [Default to non-leaf frame pointers on
aarch64-linux](https://github.com/rust-lang/rust/pull/140832)
- [Enable non-leaf frame pointers for Arm64EC
Windows](https://github.com/rust-lang/rust/pull/140862)
- [Set Apple frame pointers by
architecture](https://github.com/rust-lang/rust/pull/141797)
<a id="1.89.0-Platform-Support"></a>
## Platform Support
- [Add new Tier-3 targets `loongarch32-unknown-none` and
`loongarch32-unknown-none-softfloat`](https://github.com/rust-lang/rust/pull/142053)
- [`x86_64-apple-darwin` is in the process of being demoted to Tier 2
with host tools](https://github.com/rust-lang/rfcs/pull/3841)
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
[platform-support-doc]:
https://doc.rust-lang.org/rustc/platform-support.html
<a id="1.89.0-Libraries"></a>
## Libraries
- [Specify the base path for
`file!`](https://github.com/rust-lang/rust/pull/134442)
- [Allow storing `format_args!()` in a
variable](https://github.com/rust-lang/rust/pull/140748)
- [Add `#[must_use]` to `[T;
N]::map`](https://github.com/rust-lang/rust/pull/140957)
- [Implement `DerefMut` for
`Lazy{Cell,Lock}`](https://github.com/rust-lang/rust/pull/129334)
- [Implement `Default` for
`array::IntoIter`](https://github.com/rust-lang/rust/pull/141574)
- [Implement `Clone` for
`slice::ChunkBy`](https://github.com/rust-lang/rust/pull/138016)
- [Implement `io::Seek` for
`io::Take`](https://github.com/rust-lang/rust/pull/138023)
<a id="1.89.0-Stabilized-APIs"></a>
## Stabilized APIs
-
[`NonZero<char>`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html)
- Many intrinsics for x86, not enumerated here
- [AVX512
intrinsics](https://github.com/rust-lang/rust/issues/111137)
- [`SHA512`, `SM3` and `SM4`
intrinsics](https://github.com/rust-lang/rust/issues/126624)
-
[`File::lock`](https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.lock)
-
[`File::lock_shared`](https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.lock_shared)
-
[`File::try_lock`](https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.try_lock)
-
[`File::try_lock_shared`](https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.try_lock_shared)
-
[`File::unlock`](https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.unlock)
-
[`NonNull::from_ref`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.from_ref)
-
[`NonNull::from_mut`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.from_mut)
-
[`NonNull::without_provenance`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.without_provenance)
-
[`NonNull::with_exposed_provenance`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.with_exposed_provenance)
-
[`NonNull::expose_provenance`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.expose_provenance)
-
[`OsString::leak`](https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.leak)
-
[`PathBuf::leak`](https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.leak)
-
[`Result::flatten`](https://doc.rust-lang.org/stable/std/result/enum.Result.html#method.flatten)
-
[`std::os::linux::net::TcpStreamExt::quickack`](https://doc.rust-lang.org/stable/std/os/linux/net/trait.TcpStreamExt.html#tymethod.quickack)
-
[`std::os::linux::net::TcpStreamExt::set_quickack`](https://doc.rust-lang.org/stable/std/os/linux/net/trait.TcpStreamExt.html#tymethod.set_quickack)
These previously stable APIs are now stable in const contexts:
- [`<[T;
N]>::as_mut_slice`](https://doc.rust-lang.org/stable/std/primitive.array.html#method.as_mut_slice)
-
[`<[u8]>::eq_ignore_ascii_case`](https://doc.rust-lang.org/stable/std/primitive.slice.html#impl-%5Bu8%5D/method.eq_ignore_ascii_case)
-
[`str::eq_ignore_ascii_case`](https://doc.rust-lang.org/stable/std/primitive.str.html#impl-str/method.eq_ignore_ascii_case)
<a id="1.89.0-Cargo"></a>
## Cargo
- [`cargo fix` and `cargo clippy --fix` now default to the same Cargo
target selection as other build
commands.](https://github.com/rust-lang/cargo/pull/15192/)
Previously it would apply to all targets (like binaries, examples,
tests, etc.). The `--edition` flag still applies to all targets.
- [Stabilize
doctest-xcompile.](https://github.com/rust-lang/cargo/pull/15462/)
Doctests are now tested when cross-compiling. Just like other tests, it
will use the [`runner`
setting](https://doc.rust-lang.org/cargo/reference/config.html#targettriplerunner)
to run the tests. If you need to disable tests for a target, you can use
the [ignore doctest
attribute](https://doc.rust-lang.org/rustdoc/write-documentation/documentation-tests.html#ignoring-targets)
to specify the targets to ignore.
<a id="1.89.0-Rustdoc"></a>
## Rustdoc
- [On mobile, make the sidebar full width and
linewrap](https://github.com/rust-lang/rust/pull/139831). This
makes long section and item names much easier to deal with on mobile.
<a id="1.89.0-Compatibility-Notes"></a>
## Compatibility Notes
- [Make `missing_fragment_specifier` an unconditional
error](https://github.com/rust-lang/rust/pull/128425)
- [Enabling the `neon` target feature on
`aarch64-unknown-none-softfloat` causes a
warning](https://github.com/rust-lang/rust/pull/135160) because
mixing code with and without that target feature is not properly
supported by LLVM
- [Sized Hierarchy: Part
I](https://github.com/rust-lang/rust/pull/137944)
- Introduces a small breaking change affecting `?Sized` bounds on impls
on recursive types which contain associated type projections. It is not
expected to affect any existing published crates. Can be fixed by
refactoring the involved types or opting into the `sized_hierarchy`
unstable feature. See the [FCP
report](https://github.com/rust-lang/rust/pull/137944#issuecomment-2912207485)
for a code example.
- The warn-by-default `elided_named_lifetimes` lint is [superseded by
the warn-by-default `mismatched_lifetime_syntaxes`
lint.](https://github.com/rust-lang/rust/pull/138677)
- [Error on recursive opaque types earlier in the type
checker](https://github.com/rust-lang/rust/pull/139419)
- [Type inference side effects from requiring element types of array
repeat expressions are `Copy` are now only available at the end of type
checking](https://github.com/rust-lang/rust/pull/139635)
- [The deprecated accidentally-stable
`std::intrinsics::{copy,copy_nonoverlapping,write_bytes}` are now proper
intrinsics](https://github.com/rust-lang/rust/pull/139916).
There are no debug assertions guarding against UB, and they cannot be
coerced to function pointers.
- [Remove long-deprecated
`std::intrinsics::drop_in_place`](https://github.com/rust-lang/rust/pull/140151)
- [Make well-formedness predicates no longer
coinductive](https://github.com/rust-lang/rust/pull/140208)
- [Remove hack when checking impl method
compatibility](https://github.com/rust-lang/rust/pull/140557)
- [Remove unnecessary type inference due to built-in trait object
impls](https://github.com/rust-lang/rust/pull/141352)
- [Lint against "stdcall", "fastcall", and "cdecl" on non-x86-32
targets](https://github.com/rust-lang/rust/pull/141435)
- [Future incompatibility warnings relating to the never type (`!`) are
now reported in
dependencies](https://github.com/rust-lang/rust/pull/141937)
- [Ensure `std::ptr::copy_*` intrinsics also perform the static
self-init
checks](https://github.com/rust-lang/rust/pull/142575)
- [`extern "C"` functions on the `wasm32-unknown-unknown` target now
have a standards compliant
ABI](https://blog.rust-lang.org/2025/04/04/c-abi-changes-for-wasm32-unknown-unknown/)
<a id="1.89.0-Internal-Changes"></a>
## Internal Changes
These changes do not affect any public interfaces of Rust, but they
represent
significant improvements to the performance or internals of rustc and
related
tools.
- [Correctly un-remap compiler sources paths with the `rustc-dev`
component](https://github.com/rust-lang/rust/pull/142377)
###
[`v1.88`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1880-2025-06-26)
[Compare
Source](https://github.com/rust-lang/rust/compare/1.87.0...1.88.0)
\==========================
<a id="1.88.0-Language"></a>
## Language
- [Stabilize `#![feature(let_chains)]` in the 2024
edition.](https://github.com/rust-lang/rust/pull/132833)
This feature allows `&&`-chaining `let` statements inside `if` and
`while`, allowing intermixture with boolean expressions. The patterns
inside the `let` sub-expressions can be irrefutable or refutable.
- [Stabilize
`#![feature(naked_functions)]`.](https://github.com/rust-lang/rust/pull/134213)
Naked functions allow writing functions with no compiler-generated
epilogue and prologue, allowing full control over the generated assembly
for a particular function.
- [Stabilize
`#![feature(cfg_boolean_literals)]`.](https://github.com/rust-lang/rust/pull/138632)
This allows using boolean literals as `cfg` predicates, e.g.
`#[cfg(true)]` and `#[cfg(false)]`.
- [Fully de-stabilize the `#[bench]`
attribute](https://github.com/rust-lang/rust/pull/134273).
Usage of `#[bench]` without `#![feature(custom_test_frameworks)]`
already triggered a deny-by-default future-incompatibility lint since
Rust 1.77, but will now become a hard error.
- [Add warn-by-default `dangerous_implicit_autorefs` lint against
implicit autoref of raw pointer
dereference.](https://github.com/rust-lang/rust/pull/123239)
The lint [will be bumped to
deny-by-default](https://github.com/rust-lang/rust/pull/141661)
in the next version of Rust.
- [Add `invalid_null_arguments` lint to prevent invalid usage of null
pointers.](https://github.com/rust-lang/rust/pull/119220)
This lint is uplifted from `clippy::invalid_null_ptr_usage`.
- [Change trait impl candidate preference for builtin impls and trivial
where-clauses.](https://github.com/rust-lang/rust/pull/138176)
- [Check types of generic const parameter
defaults](https://github.com/rust-lang/rust/pull/139646)
<a id="1.88.0-Compiler"></a>
## Compiler
- [Stabilize `-Cdwarf-version` for selecting the version of DWARF debug
information to
generate.](https://github.com/rust-lang/rust/pull/136926)
<a id="1.88.0-Platform-Support"></a>
## Platform Support
- [Demote `i686-pc-windows-gnu` to Tier
2.](https://blog.rust-lang.org/2025/05/26/demoting-i686-pc-windows-gnu/)
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
[platform-support-doc]:
https://doc.rust-lang.org/rustc/platform-support.html
<a id="1.88.0-Libraries"></a>
## Libraries
- [Remove backticks from `#[should_panic]` test failure
message.](https://github.com/rust-lang/rust/pull/136160)
- [Guarantee that `[T; N]::from_fn` is generated in order of increasing
indices.](https://github.com/rust-lang/rust/pull/139099), for
those passing it a stateful closure.
- [The libtest flag `--nocapture` is deprecated in favor of the more
consistent `--no-capture`
flag.](https://github.com/rust-lang/rust/pull/139224)
- [Guarantee that `{float}::NAN` is a quiet
NaN.](https://github.com/rust-lang/rust/pull/139483)
<a id="1.88.0-Stabilized-APIs"></a>
## Stabilized APIs
-
[`Cell::update`](https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#method.update)
- [`impl Default for *const
T`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#impl-Default-for-*const+T)
- [`impl Default for *mut
T`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#impl-Default-for-*mut+T)
-
[`HashMap::extract_if`](https://doc.rust-lang.org/stable/std/collections/struct.HashMap.html#method.extract_if)
-
[`HashSet::extract_if`](https://doc.rust-lang.org/stable/std/collections/struct.HashSet.html#method.extract_if)
-
[`hint::select_unpredictable`](https://doc.rust-lang.org/stable/std/hint/fn.select_unpredictable.html)
-
[`proc_macro::Span::line`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.line)
-
[`proc_macro::Span::column`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.column)
-
[`proc_macro::Span::start`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.start)
-
[`proc_macro::Span::end`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.end)
-
[`proc_macro::Span::file`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.file)
-
[`proc_macro::Span::local_file`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.local_file)
-
[`<[T]>::as_chunks`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_chunks)
-
[`<[T]>::as_chunks_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_chunks_mut)
-
[`<[T]>::as_chunks_unchecked`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_chunks_unchecked)
-
[`<[T]>::as_chunks_unchecked_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_chunks_unchecked_mut)
-
[`<[T]>::as_rchunks`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_rchunks)
-
[`<[T]>::as_rchunks_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_rchunks_mut)
- [`mod
ffi::c_str`](https://doc.rust-lang.org/stable/std/ffi/c_str/index.html)
These previously stable APIs are now stable in const contexts:
-
[`NonNull<T>::replace`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.replace)
- [`<*mut
T>::replace`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.replace)
-
[`std::ptr::swap_nonoverlapping`](https://doc.rust-lang.org/stable/std/ptr/fn.swap_nonoverlapping.html)
-
[`Cell::replace`](https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#method.replace)
-
[`Cell::get`](https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#method.get)
-
[`Cell::get_mut`](https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#method.get_mut)
-
[`Cell::from_mut`](https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#method.from_mut)
-
[`Cell::as_slice_of_cells`](https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#method.as_slice_of_cells)
<a id="1.88.0-Cargo"></a>
## Cargo
- [Stabilize automatic garbage
collection.](https://github.com/rust-lang/cargo/pull/14287/)
- [use `zlib-rs` for gzip compression in rust
code](https://github.com/rust-lang/cargo/pull/15417/)
<a id="1.88.0-Rustdoc"></a>
## Rustdoc
- [Doctests can be ignored based on target names using `ignore-*`
attributes.](https://github.com/rust-lang/rust/pull/137096)
- [Stabilize the `--test-runtool` and `--test-runtool-arg` CLI options
to specify a program (like qemu) and its arguments to run a
doctest.](https://github.com/rust-lang/rust/pull/137096)
<a id="1.88.0-Compatibility-Notes"></a>
## Compatibility Notes
- [Finish changing the internal representation of pasted
tokens](https://github.com/rust-lang/rust/pull/124141). Certain
invalid declarative macros that were previously accepted in obscure
circumstances are now correctly rejected by the compiler. Use of a `tt`
fragment specifier can often fix these macros.
- [Fully de-stabilize the `#[bench]`
attribute](https://github.com/rust-lang/rust/pull/134273).
Usage of `#[bench]` without `#![feature(custom_test_frameworks)]`
already triggered a deny-by-default future-incompatibility lint since
Rust 1.77, but will now become a hard error.
- [Fix borrow checking some always-true
patterns.](https://github.com/rust-lang/rust/pull/139042)
The borrow checker was overly permissive in some cases, allowing
programs that shouldn't have compiled.
- [Update the minimum external LLVM to
19.](https://github.com/rust-lang/rust/pull/139275)
- [Make it a hard error to use a vector type with a non-Rust ABI without
enabling the required target
feature.](https://github.com/rust-lang/rust/pull/139309)
###
[`v1.87`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1870-2025-05-15)
[Compare
Source](https://github.com/rust-lang/rust/compare/1.86.0...1.87.0)
\==========================
<a id="1.87.0-Language"></a>
## Language
- [Stabilize `asm_goto`
feature](https://github.com/rust-lang/rust/pull/133870)
- [Allow parsing open beginning ranges (`..EXPR`) after unary operators
`!`, `-`, and
`*`](https://github.com/rust-lang/rust/pull/134900).
- [Don't require method impls for methods with `Self: Sized` bounds in
`impl`s for unsized
types](https://github.com/rust-lang/rust/pull/135480)
- [Stabilize `feature(precise_capturing_in_traits)` allowing `use<...>`
bounds on return position `impl Trait` in
`trait`s](https://github.com/rust-lang/rust/pull/138128)
<a id="1.87.0-Compiler"></a>
## Compiler
- [x86: make SSE2 required for i686 targets and use it to pass SIMD
types](https://github.com/rust-lang/rust/pull/135408)
<a id="1.87.0-Platform-Support"></a>
## Platform Support
- [Remove `i586-pc-windows-msvc`
target](https://github.com/rust-lang/rust/pull/137957)
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
[platform-support-doc]:
https://doc.rust-lang.org/rustc/platform-support.html
<a id="1.87.0-Libraries"></a>
## Libraries
- [Stabilize the anonymous pipe
API](https://github.com/rust-lang/rust/issues/127154)
- [Add support for unbounded left/right shift
operations](https://github.com/rust-lang/rust/issues/129375)
- [Print pointer metadata in `Debug` impl of raw
pointers](https://github.com/rust-lang/rust/pull/135080)
- [`Vec::with_capacity` guarantees it allocates with the amount
requested, even if `Vec::capacity` returns a different
number.](https://github.com/rust-lang/rust/pull/135933)
- Most `std::arch` intrinsics which don't take pointer arguments can now
be called from safe code if the caller has the appropriate target
features already enabled
([rust-lang/stdarch#1714](https://github.com/rust-lang/stdarch/pull/1714),
[rust-lang/stdarch#1716](https://github.com/rust-lang/stdarch/pull/1716),
[rust-lang/stdarch#1717](https://github.com/rust-lang/stdarch/pull/1717))
- [Undeprecate
`env::home_dir`](https://github.com/rust-lang/rust/pull/137327)
- [Denote `ControlFlow` as
`#[must_use]`](https://github.com/rust-lang/rust/pull/137449)
- [Macros such as `assert_eq!` and `vec!` now support `const {...}`
expressions](https://github.com/rust-lang/rust/pull/138162)
<a id="1.87.0-Stabilized-APIs"></a>
## Stabilized APIs
-
[`Vec::extract_if`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.extract_if)
-
[`vec::ExtractIf`](https://doc.rust-lang.org/stable/std/vec/struct.ExtractIf.html)
-
[`LinkedList::extract_if`](https://doc.rust-lang.org/stable/std/collections/struct.LinkedList.html#method.extract_if)
-
[`linked_list::ExtractIf`](https://doc.rust-lang.org/stable/std/collections/linked_list/struct.ExtractIf.html)
-
[`<[T]>::split_off`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off)
-
[`<[T]>::split_off_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_mut)
-
[`<[T]>::split_off_first`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_first)
-
[`<[T]>::split_off_first_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_first_mut)
-
[`<[T]>::split_off_last`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_last)
-
[`<[T]>::split_off_last_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.split_off_last_mut)
-
[`String::extend_from_within`](https://doc.rust-lang.org/stable/alloc/string/struct.String.html#method.extend_from_within)
-
[`os_str::Display`](https://doc.rust-lang.org/stable/std/ffi/os_str/struct.Display.html)
-
[`OsString::display`](https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.display)
-
[`OsStr::display`](https://doc.rust-lang.org/stable/std/ffi/struct.OsStr.html#method.display)
- [`io::pipe`](https://doc.rust-lang.org/stable/std/io/fn.pipe.html)
-
[`io::PipeReader`](https://doc.rust-lang.org/stable/std/io/struct.PipeReader.html)
-
[`io::PipeWriter`](https://doc.rust-lang.org/stable/std/io/struct.PipeWriter.html)
- [`impl From<PipeReader> for
OwnedHandle`](https://doc.rust-lang.org/stable/std/os/windows/io/struct.OwnedHandle.html#impl-From%3CPipeReader%3E-for-OwnedHandle)
- [`impl From<PipeWriter> for
OwnedHandle`](https://doc.rust-lang.org/stable/std/os/windows/io/struct.OwnedHandle.html#impl-From%3CPipeWriter%3E-for-OwnedHandle)
- [`impl From<PipeReader> for
Stdio`](https://doc.rust-lang.org/stable/std/process/struct.Stdio.html)
- [`impl From<PipeWriter> for
Stdio`](https://doc.rust-lang.org/stable/std/process/struct.Stdio.html#impl-From%3CPipeWriter%3E-for-Stdio)
- [`impl From<PipeReader> for
OwnedFd`](https://doc.rust-lang.org/stable/std/os/fd/struct.OwnedFd.html#impl-From%3CPipeReader%3E-for-OwnedFd)
- [`impl From<PipeWriter> for
OwnedFd`](https://doc.rust-lang.org/stable/std/os/fd/struct.OwnedFd.html#impl-From%3CPipeWriter%3E-for-OwnedFd)
-
[`Box<MaybeUninit<T>>::write`](https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#method.write)
- [`impl TryFrom<Vec<u8>> for
String`](https://doc.rust-lang.org/stable/std/string/struct.String.html#impl-TryFrom%3CVec%3Cu8%3E%3E-for-String)
- [`<*const
T>::offset_from_unsigned`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from_unsigned)
- [`<*const
T>::byte_offset_from_unsigned`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.byte_offset_from_unsigned)
- [`<*mut
T>::offset_from_unsigned`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from_unsigned-1)
- [`<*mut
T>::byte_offset_from_unsigned`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.byte_offset_from_unsigned-1)
-
[`NonNull::offset_from_unsigned`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.offset_from_unsigned)
-
[`NonNull::byte_offset_from_unsigned`](https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.byte_offset_from_unsigned)
-
[`<uN>::cast_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.cast_signed)
-
[`NonZero::<uN>::cast_signed`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.cast_signed-5).
-
[`<iN>::cast_unsigned`](https://doc.rust-lang.org/stable/std/primitive.isize.html#method.cast_unsigned).
-
[`NonZero::<iN>::cast_unsigned`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.cast_unsigned-5).
-
[`<uN>::is_multiple_of`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.is_multiple_of)
-
[`<uN>::unbounded_shl`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.unbounded_shl)
-
[`<uN>::unbounded_shr`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.unbounded_shr)
-
[`<iN>::unbounded_shl`](https://doc.rust-lang.org/stable/std/primitive.isize.html#method.unbounded_shl)
-
[`<iN>::unbounded_shr`](https://doc.rust-lang.org/stable/std/primitive.isize.html#method.unbounded_shr)
-
[`<iN>::midpoint`](https://doc.rust-lang.org/stable/std/primitive.isize.html#method.midpoint)
-
[`<str>::from_utf8`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8)
-
[`<str>::from_utf8_mut`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8_mut)
-
[`<str>::from_utf8_unchecked`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8_unchecked)
-
[`<str>::from_utf8_unchecked_mut`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.from_utf8_unchecked_mut)
These previously stable APIs are now stable in const contexts:
-
[`core::str::from_utf8_mut`](https://doc.rust-lang.org/stable/std/str/fn.from_utf8_mut.html)
-
[`<[T]>::copy_from_slice`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.copy_from_slice)
-
[`SocketAddr::set_ip`](https://doc.rust-lang.org/stable/std/net/enum.SocketAddr.html#method.set_ip)
-
[`SocketAddr::set_port`](https://doc.rust-lang.org/stable/std/net/enum.SocketAddr.html#method.set_port),
-
[`SocketAddrV4::set_ip`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV4.html#method.set_ip)
-
[`SocketAddrV4::set_port`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV4.html#method.set_port),
-
[`SocketAddrV6::set_ip`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_ip)
-
[`SocketAddrV6::set_port`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_port)
-
[`SocketAddrV6::set_flowinfo`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_flowinfo)
-
[`SocketAddrV6::set_scope_id`](https://doc.rust-lang.org/stable/std/net/struct.SocketAddrV6.html#method.set_scope_id)
-
[`char::is_digit`](https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_digit)
-
[`char::is_whitespace`](https://doc.rust-lang.org/stable/std/primitive.char.html#method.is_whitespace)
- [`<[[T;
N]]>::as_flattened`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_flattened)
- [`<[[T;
N]]>::as_flattened_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_flattened_mut)
-
[`String::into_bytes`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.into_bytes)
-
[`String::as_str`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_str)
-
[`String::capacity`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.capacity)
-
[`String::as_bytes`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_bytes)
-
[`String::len`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.len)
-
[`String::is_empty`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.is_empty)
-
[`String::as_mut_str`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_mut_str)
-
[`String::as_mut_vec`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.as_mut_vec)
-
[`Vec::as_ptr`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_ptr)
-
[`Vec::as_slice`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_slice)
-
[`Vec::capacity`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.capacity)
-
[`Vec::len`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.len)
-
[`Vec::is_empty`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.is_empty)
-
[`Vec::as_mut_slice`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_mut_slice)
-
[`Vec::as_mut_ptr`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.as_mut_ptr)
<a id="1.87.0-Cargo"></a>
## Cargo
- [Add terminal integration via ANSI OSC 9;4
sequences](https://github.com/rust-lang/cargo/pull/14615/)
- [chore: bump openssl to
v3](https://github.com/rust-lang/cargo/pull/15232/)
- [feat(package): add --exclude-lockfile
flag](https://github.com/rust-lang/cargo/pull/15234/)
<a id="1.87.0-Compatibility-Notes"></a>
## Compatibility Notes
- [Rust now raises an error for macro invocations inside the
`#![crate_name]`
attribute](https://github.com/rust-lang/rust/pull/127581)
- [Unstable fields are now always considered to be
inhabited](https://github.com/rust-lang/rust/pull/133889)
- [Macro arguments of unary operators followed by open beginning ranges
may now be matched
differently](https://github.com/rust-lang/rust/pull/134900)
- [Make `Debug` impl of raw pointers print metadata if
present](https://github.com/rust-lang/rust/pull/135080)
- [Warn against function pointers using unsupported ABI strings in
dependencies](https://github.com/rust-lang/rust/pull/135767)
- [Associated types on `dyn` types are no longer
deduplicated](https://github.com/rust-lang/rust/pull/136458)
- [Forbid attributes on `..` inside of struct patterns (`let Struct {
#[attribute] .. })
=`](https://github.com/rust-lang/rust/pull/136490)
- [Make `ptr_cast_add_auto_to_object` lint into hard
error](https://github.com/rust-lang/rust/pull/136764)
- Many `std::arch` intrinsics are now safe to call in some contexts,
there may now be new `unused_unsafe` warnings in existing codebases.
- [Limit `width` and `precision` formatting options to 16 bits on all
targets](https://github.com/rust-lang/rust/pull/136932)
- [Turn order dependent trait objects future incompat warning into a
hard error](https://github.com/rust-lang/rust/pull/136968)
- [Denote `ControlFlow` as
`#[must_use]`](https://github.com/rust-lang/rust/pull/137449)
- [Windows: The standard library no longer links `advapi32`, except on
win7.](https://github.com/rust-lang/rust/pull/138233) Code such
as C libraries that were relying on this assumption may need to
explicitly link advapi32.
- [Proc macros can no longer observe expanded `cfg(true)`
attributes.](https://github.com/rust-lang/rust/pull/138844)
- [Start changing the internal representation of pasted
tokens](https://github.com/rust-lang/rust/pull/124141). Certain
invalid declarative macros that were previously accepted in obscure
circumstances are now correctly rejected by the compiler. Use of a `tt`
fragment specifier can often fix these macros.
- [Don't allow flattened format\_args in
const.](https://github.com/rust-lang/rust/pull/139624)
<a id="1.87.0-Internal-Changes"></a>
## Internal Changes
These changes do not affect any public interfaces of Rust, but they
represent
significant improvements to the performance or internals of rustc and
related
tools.
- [Update to LLVM
20](https://github.com/rust-lang/rust/pull/135763)
###
[`v1.86`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1860-2025-04-03)
[Compare
Source](https://github.com/rust-lang/rust/compare/1.85.0...1.86.0)
\==========================
<a id="1.86.0-Language"></a>
## Language
- [Stabilize upcasting trait objects to
supertraits.](https://github.com/rust-lang/rust/pull/134367)
- [Allow safe functions to be marked with the `#[target_feature]`
attribute.](https://github.com/rust-lang/rust/pull/134090)
- [The `missing_abi` lint now
warns-by-default.](https://github.com/rust-lang/rust/pull/132397)
- Rust now lints about double negations, to catch cases that might have
intended to be a prefix decrement operator (`--x`) as written in other
languages. This was previously a clippy lint, `clippy::double_neg`, and
is [now available directly in Rust as
`double_negations`.](https://github.com/rust-lang/rust/pull/126604)
- [More pointers are now detected as definitely not-null based on their
alignment in const
eval.](https://github.com/rust-lang/rust/pull/133700)
- [Empty `repr()` attribute applied to invalid items are now correctly
rejected.](https://github.com/rust-lang/rust/pull/133925)
- [Inner attributes `#![test]` and `#![rustfmt::skip]` are no longer
accepted in more places than
intended.](https://github.com/rust-lang/rust/pull/134276)
<a id="1.86.0-Compiler"></a>
## Compiler
- [Debug-assert that raw pointers are non-null on
access.](https://github.com/rust-lang/rust/pull/134424)
- [Change `-O` to mean `-C opt-level=3` instead of `-C opt-level=2` to
match Cargo's
defaults.](https://github.com/rust-lang/rust/pull/135439)
- [Fix emission of `overflowing_literals` under certain macro
environments.](https://github.com/rust-lang/rust/pull/136393)
<a id="1.86.0-Platform-Support"></a>
## Platform Support
- [Replace `i686-unknown-redox` target with
`i586-unknown-redox`.](https://github.com/rust-lang/rust/pull/136698)
- [Increase baseline CPU of `i686-unknown-hurd-gnu` to Pentium
4.](https://github.com/rust-lang/rust/pull/136700)
- New tier 3 targets:
-
[`{aarch64-unknown,x86_64-pc}-nto-qnx710_iosock`](https://github.com/rust-lang/rust/pull/133631).
For supporting Neutrino QNX 7.1 with `io-socket` network stack.
-
[`{aarch64-unknown,x86_64-pc}-nto-qnx800`](https://github.com/rust-lang/rust/pull/133631).
For supporting Neutrino QNX 8.0 (`no_std`-only).
-
[`{x86_64,i686}-win7-windows-gnu`](https://github.com/rust-lang/rust/pull/134609).
Intended for backwards compatibility with Windows 7.
`{x86_64,i686}-win7-windows-msvc` are the Windows MSVC counterparts that
already exist as Tier 3 targets.
-
[`amdgcn-amd-amdhsa`](https://github.com/rust-lang/rust/pull/134740).
-
[`x86_64-pc-cygwin`](https://github.com/rust-lang/rust/pull/134999).
-
[`{mips,mipsel}-mti-none-elf`](https://github.com/rust-lang/rust/pull/135074).
Initial bare-metal support.
-
[`m68k-unknown-none-elf`](https://github.com/rust-lang/rust/pull/135085).
- [`armv7a-nuttx-{eabi,eabihf}`, `aarch64-unknown-nuttx`, and
`thumbv7a-nuttx-{eabi,eabihf}`](https://github.com/rust-lang/rust/pull/135757).
Refer to Rust's \[platform support page]\[platform-support-doc]
for more information on Rust's tiered platform support.
<a id="1.86.0-Libraries"></a>
## Libraries
- The type of `FromBytesWithNulError` in
`CStr::from_bytes_with_nul(bytes: &[u8]) -> Result<&Self,
FromBytesWithNulError>` was [changed from an opaque struct to an
enum](https://github.com/rust-lang/rust/pull/134143), allowing
users to examine why the conversion failed.
- [Remove `RustcDecodable` and
`RustcEncodable`.](https://github.com/rust-lang/rust/pull/134272)
- [Deprecate libtest's `--logfile`
option.](https://github.com/rust-lang/rust/pull/134283)
- [On recent versions of Windows, `std::fs::remove_file` will now remove
read-only
files.](https://github.com/rust-lang/rust/pull/134679)
<a id="1.86.0-Stabilized-APIs"></a>
## Stabilized APIs
-
[`{float}::next_down`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.next_down)
-
[`{float}::next_up`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.next_up)
-
[`<[_]>::get_disjoint_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.get_disjoint_mut)
-
[`<[_]>::get_disjoint_unchecked_mut`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.get_disjoint_unchecked_mut)
-
[`slice::GetDisjointMutError`](https://doc.rust-lang.org/stable/std/slice/enum.GetDisjointMutError.html)
-
[`HashMap::get_disjoint_mut`](https://doc.rust-lang.org/std/collections/hash_map/struct.HashMap.html#method.get_disjoint_mut)
-
[`HashMap::get_disjoint_unchecked_mut`](https://doc.rust-lang.org/std/collections/hash_map/struct.HashMap.html#method.get_disjoint_unchecked_mut)
-
[`NonZero::count_ones`](https://doc.rust-lang.org/stable/std/num/struct.NonZero.html#method.count_ones)
-
[`Vec::pop_if`](https://doc.rust-lang.org/std/vec/struct.Vec.html#method.pop_if)
-
[`sync::Once::wait`](https://doc.rust-lang.org/stable/std/sync/struct.Once.html#method.wait)
-
[`sync::Once::wait_force`](https://doc.rust-lang.org/stable/std/sync/struct.Once.html#method.wait_force)
-
[`sync::OnceLock::wait`](https://doc.rust-lang.org/stable/std/sync/struct.OnceLock.html#method.wait)
These APIs are now stable in const contexts:
-
[`hint::black_box`](https://doc.rust-lang.org/stable/std/hint/fn.black_box.html)
-
[`io::Cursor::get_mut`](https://doc.rust-lang.org/stable/std/io/struct.Cursor.html#method.get_mut)
-
[`io::Cursor::set_position`](https://doc.rust-lang.org/stable/std/io/struct.Cursor.html#method.set_position)
-
[`str::is_char_boundary`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.is_char_boundary)
-
[`str::split_at`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at)
-
[`str::split_at_checked`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at_checked)
-
[`str::split_at_mut`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at_mut)
-
[`str::split_at_mut_checked`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.split_at_mut_checked)
<a id="1.86.0-Cargo"></a>
## Cargo
- [When merging, replace rather than combine configuration keys that
refer to a program path and its
arguments.](https://github.com/rust-lang/cargo/pull/15066/)
- [Error if both `--package` and `--workspace` are passed but the
requested package is
missing.](https://github.com/rust-lang/cargo/pull/15071/) This
was previously silently ignored, which was considered a bug since
missing packages should be reported.
- [Deprecate the token argument in `cargo login` to avoid shell history
leaks.](https://github.com/rust-lang/cargo/pull/15057/)
- [Simplify the implementation of `SourceID`
comparisons.](https://github.com/rust-lang/cargo/pull/14980/)
This may potentially change behavior if the canonicalized URL compares
differently in alternative registries.
<a id="1.86.0-Rustdoc"></a>
## Rustdoc
- [Add a sans-serif font
setting.](https://github.com/rust-lang/rust/pull/133636)
<a id="1.86.0-Compatibility-Notes"></a>
## Compatibility Notes
- [The `wasm_c_abi` future compatibility warning is now a hard
error.](https://github.com/rust-lang/rust/pull/133951)
Users of `wasm-bindgen` should upgrade to at least version 0.2.89,
otherwise compilation will fail.
- [Remove long-deprecated no-op attributes `#![no_start]` and
`#![crate_id]`.](https://github.com/rust-lang/rust/pull/134300)
- [The future incompatibility lint `cenum_impl_drop_cast` has been made
into a hard
error.](https://github.com/rust-lang/rust/pull/135964) This
means it is now an error to cast a field-less enum to an integer if the
enum implements `Drop`.
- [SSE2 is now required for "i686" 32-bit x86 hard-float targets;
disabling it causes a warning that will become a hard error
eventually.](https://github.com/rust-lang/rust/pull/137037)
To compile for pre-SSE2 32-bit x86, use a "i586" target instead.
<a id="1.86.0-Internal-Changes"></a>
## Internal Changes
These changes do not affect any public interfaces of Rust, but they
represent
significant improvements to the performance or internals of rustc and
related
tools.
- [Build the rustc on AArch64 Linux with ThinLTO +
PGO.](https://github.com/rust-lang/rust/pull/133807)
The ARM 64-bit compiler (AArch64) on Linux is now optimized with ThinLTO
and PGO, similar to the optimizations we have already performed for the
x86-64 compiler on Linux. This should make it up to 30% faster.
###
[`v1.85`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1851-2025-03-18)
[Compare
Source](https://github.com/rust-lang/rust/compare/1.84.0...1.85.0)
\==========================
<a id="1.85.1"></a>
- [Fix the doctest-merging feature of the 2024
Edition.](https://github.com/rust-lang/rust/pull/137899/)
- [Relax some `target_feature` checks when generating
docs.](https://github.com/rust-lang/rust/pull/137632/)
- [Fix errors in `std::fs::rename` on Windows 10, version
1607.](https://github.com/rust-lang/rust/pull/137528/)
- [Downgrade bootstrap `cc` to fix custom
targets.](https://github.com/rust-lang/rust/pull/137460/)
- [Skip submodule updates when building Rust from a source
tarball.](https://github.com/rust-lang/rust/pull/137338/)
###
[`v1.84`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1841-2025-01-30)
[Compare
Source](https://github.com/rust-lang/rust/compare/1.83.0...1.84.0)
\==========================
<a id="1.84.1"></a>
- [Fix ICE 132920 in duplicate-crate
diagnostics.](https://github.com/rust-lang/rust/pull/133304/)
- [Fix errors for overlapping impls in incremental
rebuilds.](https://github.com/rust-lang/rust/pull/133828/)
- [Fix slow compilation related to the next-generation trait
solver.](https://github.com/rust-lang/rust/pull/135618/)
- [Fix debuginfo when LLVM's location discriminator value limit is
exceeded.](https://github.com/rust-lang/rust/pull/135643/)
- Fixes for building Rust from source:
- [Only try to distribute `llvm-objcopy` if llvm tools are
enabled.](https://github.com/rust-lang/rust/pull/134240/)
- [Add Profile Override for Non-Git
Sources.](https://github.com/rust-lang/rust/pull/135433/)
- [Resolve symlinks of LLVM tool binaries before copying
them.](https://github.com/rust-lang/rust/pull/135585/)
- [Make it possible to use ci-rustc on tarball
sources.](https://github.com/rust-lang/rust/pull/135722/)
###
[`v1.83`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1830-2024-11-28)
[Compare
Source](https://github.com/rust-lang/rust/compare/1.82.0...1.83.0)
\==========================
<a id="1.83.0-Language"></a>
## Language
- [Stabilize `&mut`, `*mut`, `&Cell`, and `*const Cell` in
const.](https://github.com/rust-lang/rust/pull/129195)
- [Allow creating references to statics in `const`
initializers.](https://github.com/rust-lang/rust/pull/129759)
- [Implement raw lifetimes and labels
(`'r#ident`).](https://github.com/rust-lang/rust/pull/126452)
- [Define behavior when atomic and non-atomic reads
race.](https://github.com/rust-lang/rust/pull/128778)
- [Non-exhaustive structs may now be
empty.](https://github.com/rust-lang/rust/pull/128934)
- [Disallow implicit coercions from places of type
`!`](https://github.com/rust-lang/rust/pull/129392)
- [`const extern` functions can now be defined for other calling
conventions.](https://github.com/rust-lang/rust/pull/129753)
- [Stabilize `expr_2021` macro fragment specifier in all
editions.](https://github.com/rust-lang/rust/pull/129972)
- [The `non_local_definitions` lint now fires on less code and warns by
default.](https://github.com/rust-lang/rust/pull/127117)
<a id="1.83.0-Compiler"></a>
## Compiler
- [Deprecate unsound `-Csoft-float`
flag.](https://github.com/rust-lang/rust/pull/129897)
- Add many new tier 3 targets:
-
[`aarch64_unknown_nto_qnx700`](https://github.com/rust-lang/rust/pull/127897)
-
[`arm64e-apple-tvos`](https://github.com/rust-lang/rust/pull/130614)
-
[`armv7-rtems-eabihf`](https://github.com/rust-lang/rust/pull/127021)
-
[`loongarch64-unknown-linux-ohos`](https://github.com/rust-lang/rust/pull/130750)
- [`riscv32-wrs-vxworks` and
`riscv64-wrs-vxworks`](https://github.com/rust-lang/rust/pull/130549)
-
[`riscv32{e|em|emc}-unknown-none-elf`](https://github.com/rust-lang/rust/pull/130555)
-
[`x86_64-unknown-hurd-gnu`](https://github.com/rust-lang/rust/pull/128345)
-
[`x86_64-unknown-trusty`](https://github.com/rust-lang/rust/pull/130453)
Refer to Rust's \[platform support page]\[platform-support-doc]
for more information on Rust's tiered platform support.
<a id="1.83.0-Libraries"></a>
## Libraries
- [Implement `PartialEq` for
`ExitCode`.](https://github.com/rust-lang/rust/pull/127633)
- [Document that `catch_unwind` can deal with foreign exceptions without
UB, although the exact behavior is
unspecified.](https://github.com/rust-lang/rust/pull/128321)
- [Implement `Default` for `HashMap`/`HashSet` iterators that don't
already have
it.](https://github.com/rust-lang/rust/pull/128711)
- [Bump Unicode to version
16.0.0.](https://github.com/rust-lang/rust/pull/130183)
- [Change documentation of `ptr::add`/`sub` to not claim equivalence
with `offset`.](https://github.com/rust-lang/rust/pull/130229)
<a id="1.83.0-Stabilized-APIs"></a>
## Stabilized APIs
-
[`BufRead::skip_until`](https://doc.rust-lang.org/stable/std/io/trait.BufRead.html#method.skip_until)
-
[`ControlFlow::break_value`](https://doc.rust-lang.org/stable/core/ops/enum.ControlFlow.html#method.break_value)
-
[`ControlFlow::continue_value`](https://doc.rust-lang.org/stable/core/ops/enum.ControlFlow.html#method.continue_value)
-
[`ControlFlow::map_break`](https://doc.rust-lang.org/stable/core/ops/enum.ControlFlow.html#method.map_break)
-
[`ControlFlow::map_continue`](https://doc.rust-lang.org/stable/core/ops/enum.ControlFlow.html#method.map_continue)
-
[`DebugList::finish_non_exhaustive`](https://doc.rust-lang.org/stable/core/fmt/struct.DebugList.html#method.finish_non_exhaustive)
-
[`DebugMap::finish_non_exhaustive`](https://doc.rust-lang.org/stable/core/fmt/struct.DebugMap.html#method.finish_non_exhaustive)
-
[`DebugSet::finish_non_exhaustive`](https://doc.rust-lang.org/stable/core/fmt/struct.DebugSet.html#method.finish_non_exhaustive)
-
[`DebugTuple::finish_non_exhaustive`](https://doc.rust-lang.org/stable/core/fmt/struct.DebugTuple.html#method.finish_non_exhaustive)
-
[`ErrorKind::ArgumentListTooLong`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.ArgumentListTooLong)
-
[`ErrorKind::Deadlock`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.Deadlock)
-
[`ErrorKind::DirectoryNotEmpty`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.DirectoryNotEmpty)
-
[`ErrorKind::ExecutableFileBusy`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.ExecutableFileBusy)
-
[`ErrorKind::FileTooLarge`](https://doc.rust-lang.org/stable/std/io/enum.ErrorKind.html#variant.F
</details>
---
### Configuration
📅 **Schedule**: Branch creation - Every minute ( * * * * * ) (UTC),
Automerge - At any time (no schedule defined).
🚦 **Automerge**: Enabled.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/winnow-rs/winnow).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xMzEuOSIsInVwZGF0ZWRJblZlciI6IjQxLjEzMS45IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
ACP: rust-lang/libs-team#494